MYSQL双向复制(Windows)


最近做mysql的主从服务器(master-slave)复制,折腾了半天才搞定,记录一下完整的过程;就用局域网数据替代我的操作,比如:slaveip为从服务器ip,192.168.2.3;masterip为主服务器ip,192.168.2.2。


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


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



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#可设定只读



3、主服务器锁表

mysql> FLUSH TABLES WITH READ LOCK;

注意,锁定后数据库只读,因此最好在数据库非访问期间做此操作


4、主服务器导出数据库

mysqldump -uroot -ppasswd dbname>dbname.sql



5、从服务器导入数据

mysql -uroot -ppasswd dbname< dbname.sql



6、查看并记录主服务器状态

mysql> show master status;


记下File和Position,后面用到,比如:

File:mysql-bin.000003,Position:15386161;



7、从服务器设置复制点

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



8、检查slave状态

mysql >show slave statusG;

Slave_IO_Running和Slave_SQL_Running均为Yes说明配置成功。



9、恢复主服务器锁表

mysql >unlock tables;



10、测试复制同步情况


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论