如何设置MySQL主-主复制(Master-Slave)
MySQL主-从复制(Master-Slave )是设置从服务器,当主服务器发生更改时立即更新。
但是如果从服务器上有任何更改,它将不会更新主服务器。
阅读本文来设置主-从复制。
本文将设置MySQL服务器之间的主-主复制(Master-Slave)。
在此设置中,如果在任何一台服务器上所做的任何更改将在另一台服务器上更新。
服务器信息:
Master-1: 192.168.1.15 Master-2: 192.168.1.16 Database: mydb
如果你使用不同版本的MySQL,需要先检查兼容性。
步骤1。设置MySQL主服务器1
编辑MySQL配置文件并在[mysqld]部分中添加以下行。
# vim /etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1
重新启动MySQL服务器,使更改生效。
# service mysqld restart
在主服务器1上创建一个具有REPLICATION SLAVE特权的mysql帐户,复制客户端将连接到主服务器。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES;
锁表,阻止对所有表执行写语句,因此在进行备份后不能做任何更改。
mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK;
使用下面的命令检查当前二进制日志文件名和当前偏移量值。
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 332 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上面的输出显示了当前二进制文件使用的是 mysql-bin.000003,偏移值为 332。
记下这些值,以便在下一个步骤中在主服务器2上使用。
备份数据库并将其复制到另一个mysql服务器。
# mysqldump -u root -p mydb > mydb.sql # scp mydb.sql 192.168.1.16:/opt/
完成备份后,从表中删除读锁,以便可以进行更改。
mysql> UNLOCK TABLES;
步骤2。设置MySQL主服务器2
编辑mysql Master-2配置文件,并在[mysqld]部分添加以下值。
# vim /etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1
server-id总是一个非零数值。
这些值永远不会与其他主服务器或从服务器相同。
重新启动MySQL服务器,如果我们已经配置了复制, 那么在启动时使用-skip-slave-start选项,不立即连接到主服务器。
# service mysqld restart
还原从主服务器1获取的数据库备份。
# mysql -u root -p mydb < /opt/mydb.sql
在主服务器2上创建一个具有复制从特权的mysql帐户,复制客户端将连接到主服务器。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES;
使用下面的命令检查当前二进制日志文件名和当前偏移量值。
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 847 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上面的输出显示了当前二进制文件使用的是 mysql-bin.000001,偏移值为 847。
记下这些值,将在步骤3中使用他们。
在从服务器上使用以下命令设置选项值。
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.15', -> MASTER_USER='repl_user', -> MASTER_PASSWORD='secretpassword', -> MASTER_LOG_FILE='mysql-bin.000003', -> MASTER_LOG_POS=332;
步骤3:在MySQL 主服务器Master-1上完成安装
登录到MySQL主服务器1并执行以下命令。
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.16', MASTER_USER='repl_user', MASTER_PASSWORD='secretpassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=847;
步骤4:在两个服务器上启动从服务器
在两个服务器上执行以下命令以启动从复制进程。
mysql> SLAVE START;
MySQL主-主复制已经在系统上成功配置,并处于工作模式。
要测试复制是否在工作,请在任何一台服务器上对数据库数据进行更改,并检查在其他服务器上是否也更改了。