准备:
确保两台数据库服务器具有相同的初态。
确保两台服务器的防火墙开启mysql的3306端口,没有开启自行添加。
vim /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
- 主从单向复制
- 在主服务器上创建备份账户,命令如下:
mysql>grant replication slave on *.* to '账户名称'@'从服务器地址'identified by '密码';
刷新账户权限:
mysql> flush privileges;
- 修改主服务器的配置文件,文件位置:/etc/my.cnf
vim /etc/my.cnf
添加如下字段:
##需要备份的数据库
binlog-do-db = test_db
##忽略备份的数据库,这里忽略的是系统自带的库(红色部分)
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = test
read-only=0
auto-increment-increment = 10
auto-increment-offset = 1
- 查看主服务器master的状态:
mysql>show master status \G;
记住File和Position的值。
- 修改从服务器的配置文件,文件位置:/etc/my.cnf
vim/etc/my.cnf
修改如下字段:
server = 1 改成 server = 2
添加如下字段:
##需要备份的数据库
replicate-do-db = test_db
##忽略备份的数据库,这里忽略的是系统自带的库(红色部分)
replicate-ignore-db=mysq
replicate-ignore-db=information_schema
replicate-ignore-db= performance_schema
replicate-ignore-db=test
relay_log=mysqld-relay-bin
log-slave-updates = on
修改之后重启mysql服务
- 从服务器开始同步
mysql>CHANGE MASTER TO MASTER_HOST=‘主服务器ip地址’,MASTER_USER=‘同步账户名称’,MASTER_PASSWORD=‘密码’,MASTER_LOG_FILE=‘第四步从服务器的File值’,MASTER_LOG_POS=第四步从服务器的Position值;
重启mysql服务
- 查看同步状态
mysql>SHOW MASTER STATUS \G;
查看下面两项的值,如果都为yes代表同步成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 主从双向复制
- 在从服务器上创建备份账户,命令如下:
mysql>grant replication slave on *.* to '账户名称'@'主服务器地址'identified by '密码';
- 修改从服务器的配置文件,文件位置:/etc/my.cnf
vim /etc/my.cnf
read-only=0
##忽略备份的数据库,这里忽略的是系统自带的库(红色部分)
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = test
auto-increment-increment = 10
auto-increment-offset = 2
- 查看从服务器master的状态:
mysql>show master status \G;
记住File和Position的值。
- 修改主服务器的配置文件,文件位置:/etc/my.cnf
vim/etc/my.cnf
##需要备份的数据库
replicate-do-db =test_db
##忽略备份的数据库,这里忽略的是系统自带的库(红色部分)
replicate-ignore-db=mysq
replicate-ignore-db=information_schema
replicate-ignore-db= performance_schema
replicate-ignore-db=test
relay_log=mysqld-relay-bin
log-slave-updates = ON
修改之后重启mysql服务
- 主服务器开始同步
mysql>CHANGE MASTER TO MASTER_HOST=‘从服务器ip地址’,MASTER_USER=‘同步账户名称’,MASTER_PASSWORD=‘密码’,MASTER_LOG_FILE=‘第四步从服务器的File的值’,MASTER_LOG_POS=第四步从服务器的Position值;
重启mysql服务
- 查看同步状态
mysql>SHOW MASTER STATUS \G;
查看下面两项的值,如果都为yes代表同步成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果为no,可以查看日志,目录为/usr/local/mysql/data/主机名.err
多数情况由以下原因造成:
防火墙关闭或开启3306端口
同步时用户名密码是否正确
同步时IP地址填写正确
mysql错误日志提示没有找到中继日志文件的解决办法:
1.停止mysql服务
2.在/usr/local/mysql/data目录下删除,relay-log.info、主机名-relay-bin.000***、主机名-relay-bin.index三个文件后重启服务。
验证:主服务器随便写点数据,观察从服务器变化。反向测试,观察主服务器变化。