首先,设置my.ini里面的参数,如果之前没有设置过的,直接在末尾增添如下设置
#ID
server-id=1
#日志位置
log-bin=C:\Program Files (x86)\MySQL\MySQL Server 5.5
#要同步的库名
binlog-do-db = test105
#不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql
#用从属服务器上的日志功能
log-slave-updates
#经过1日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0。
sync_binlog=1
#auto_increment,控制自增列AUTO_INCREMENT的行为
#用于MASTER-MASTER之间的复制,防止出现重复值,
#auto_increment_increment=n有多少台服务器,n就设置为多少,
#auto_increment_offset=1设置步长,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID
auto_increment_offset=1
auto_increment_increment=2
#进行镜像处理的数据库
replicate-do-db = test105
#不进行镜像处理的数据库
replicate-ignore-db= mysql
#ID
server-id=2
#日志位置
log-bin=C:\Program Files (x86)\MySQL\MySQL Server 5.5
#要同步的库名
binlog-do-db = test105
#不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql
#用从属服务器上的日志功能
log-slave-updates
#经过1日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0。
sync_binlog=1
#auto_increment,控制自增列AUTO_INCREMENT的行为
#用于MASTER-MASTER之间的复制,防止出现重复值,
#auto_increment_increment=n有多少台服务器,n就设置为多少,
#auto_increment_offset=1设置步长,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID
auto_increment_offset=2
auto_increment_increment=2
#进行镜像处理的数据库
replicate-do-db = test105
#不进行镜像处理的数据库
replicate-ignore-db= mysql
#mysql –u root –p 1234
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001| 107 | test | mysql |
+------------------+----------+--------------+----------
#mysql –u root –p 1234
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002| 107 | test | mysql |
+------------------+----------+--------------+------
a.创建账户并授予REPLICATION SLAVE权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '1234'; //建立一个用户名为slave的帐户
mysql> FLUSH PRIVILEGES; //刷新相关权限表
Master1(192.168.0.1)上操作如下:
mysql> stop slave; //停止slave
mysql>change master to master_host='192.168.0.2', master_user='slave', master_password='1234', master_log_file='mysql-bin.000002', master_log_pos=107; //修改当前的Master的值,因为是互为备份,所以Master1(192.168.0.1)的master为Master2(192.168.0.2),Master2设置复制的用户名为slave,密码是1234,上面通过 show master status我们得知,log_file是mysql-bin.000002,postion是107。
mysql>start slave; //开始salve,开始同步
mysql>show slave status; //检测slave状态,如果Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master:
Master1(192.168.0.2)上操作如下:
mysql> stop slave; //停止slave
mysql>change master to master_host='192.168.0.1', master_user='slave', master_password='1234', master_log_file='mysql-bin.000001', master_log_pos=107; //修改当前的Master的值,因为是互为备份,所以Master2(192.168.0.2)的master为Master1(192.168.0.1),Master2设置复制的用户名为slave,密码是1234,上面通过 show master status我们得知,log_file是mysql-bin.000001,postion是107。
mysql>start slave; //开始salve,开始同步
mysql>show slave status\G; //检测slave状态,如果Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master:
两个mysql均获得如下结果表示成功,可以在(192.168.0.1)数据库中test105中新建一张表,如果(192.168.0.2)数据库test105中也建立同样一张,说明单项成功,再在(192.168.0.2)中的test105中新建一张表,在(192.168.0.1)数据库test105中查看结果,如果生成了同一张,则表示双向备份成功。
原博客是:https://blog.csdn.net/ly199108171231/article/details/78455232,由于这篇文章的源内容看起来比较吃力,有些地方是空白看不见的,所以手动备份翻译一次,也做一次记录