您的位置:宽带测速网 > mysql教程 > 怎么进行MySQL中的主主复制

怎么进行MySQL中的主主复制

2025-06-22 17:06来源:互联网 [ ]

MySQL复制技术之主主复制

1) 初始化数据库(master1,master2)

Master1:vm1:192.168.12.181、mysqld2

Master2:vm2:192.168.12.182、mysqld2

2) 配置my.cnf

Master1:

[mysqld2]

port=3307

basedir=/usr

datadir=/data/mysql/data2

socket=/var/lib/mysql/mysql2.sock

pid-file=/var/run/mysqld/mysqld2.pid

log-error=/data/mysql/log2/mysqld2.log

user=mysql

server_id=5

log_bin=/data/mysql/log2/vm2-bin.log

relay-log=/data/mysql/log2/vm2-slave-bin.log

Master2:

[mysqld2]

port=3307

basedir=/usr

datadir=/data/mysql/data2

socket=/var/lib/mysql/mysql2.sock

pid-file=/var/run/mysqld/mysqld2.pid

log-error=/data/mysql/log2/mysqld2.log

user=mysql

server_id=6

log_bin=/data/mysql/log2/vm2-bin.log

relay-log=/data/mysql/log2/vm2-slave-bin.log

log_slave_updates=on

#slave-skip-errors=all

启动mysql

常用参数:

binlog-do-db=db_rocky #需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

binlog-ignore-db=mysql #不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

replicate-do-db=db_rocky #需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项

replicate-ignore-db=mysql,information_schema #不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项

#同步参数:

#保证slave挂在任何一台master上都会接收到另一个master的写入信息

log_bin=/data/mysql/log2/vm2-bin.log

relay-log=/data/mysql/log2/vm2-slave-bin.log

log_slave_updates=on

slave-skip-errors=all #过滤掉一些没啥大问题的错误

3) 创建同步用户

Master1:

Mysql>grantreplication slave on *.* to repuser1 identifiedby 'aa12AA,.';

Master2:

Mysql>grant replication slave on *.* to repuser2 identified by 'aa12AA,.';

4) 连接master1与master2

master1:

mysql>change master to

master_host = '192.168.12.182',

master_port = 3307,

master_user = 'repuser2',

master_password = 'aa12AA,.';

(master_log_file ='vm2-bin.000009', master_log_pos = 1;)

Mysql>start slave;

master2:

mysql>change master to

master_host = '192.168.12.181',

master_port = 3307,

master_user = 'repuser1',

master_password = 'aa12AA,.';

(master_log_file ='vm2-bin.000009', master_log_pos = 1;)

Mysql>start slave;