/**************************************主从复制 start***************************************/
1、设置主服务器
a)【my.cnf或my.ini的[mysqld]添加】
log-bin=mysql-bin
server-id =1 #主服务器ID,从服务器不能相同
binlog-do-db=dbname#计划备份的数据库,不设置的话备份binlog-ignore-db以外所有数据库,包括创建数据库
binlog-ignore-db=mysql,test,information_schema
实际操作{
server-id=1
log-bin=mysql-bin
binlog-do-db=think_ceshi
}
b)添加复制用户repluser,密码passwd,授权该用户可复制权限
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repluser‘@‘slaveip‘ IDENTIFIED BY ‘passwd‘;
mysql>FLUSH PRIVILEGES;
其中,slaveip为从服务器ip,比如192.168.2.3
实际操作{
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘cong‘@‘192.168.80.130‘ IDENTIFIED BY ‘123456‘;
FLUSH PRIVILEGES;
}
遇到的问题 可能在从数据库连不上主数据库 可能是防火墙问题 可以关闭防火墙在试试
2、设置从服务器
my.cnf或my.ini的[mysqld]段添加
server-id = 2
master-host = slaveip
master-user = repluser
master-password = passwd
master-port = 3306
log-bin=mysql-bin
master-connect-retry=60
replicate-do-db=dname
log-slave-updates
read-only=1#可设定只读
实际操作{
server-id=2
log-bin=mysql-bin
replicate-do-db=think_ceshi
log-slave-updates
read-only=1
}
3、设置从服务器
show master status;
记下File和Position
File:mysql-bin.000003,Position:15386161;
4、从服务器设置复制点
mysql > stop slave;
代入前面(第5步)的file和position
mysql > change master to master_host=‘masterip‘, master_user=‘repluser‘, master_password=‘passwd‘, master_log_file=‘mysql-bin.000003‘, master_log_pos=15386161;
mysql > start slave;
其中,masterip为主服务器ip,比如192.168.2.2
实际操作{
重启mysql服务
stop slave;
change master to master_host=‘192.168.80.129‘, master_user=‘cong‘, master_password=‘123456‘, master_log_file=‘mysql-bin.000002‘, master_log_pos=120;
start slave;
}
5、检查slave状态
mysql >show slave status;
Slave_IO_Running和Slave_SQL_Running均为Yes说明配置成功
实际操作{
Slave_IO_Running:NO
主从服务器的auto.cnf中的server-uuid相同了导致的错误
把从服务器的auto.cnf 重命名auto.cnf.bak 在重新启动mysql服务器 重新生成新的auto.cnf
再次查看show slave status ok 好了
在主数据库插入一条数据 从服务器就能同步复制
}
/**************************************主从复制end***************************************/