MySQL数据库同步复制的功能主要体现在它的配置文件(liunx 下为/etc/my.cnf)上,其工作原理为slave端记录并且执行master端的操作日志。
一. 准备工作
需要准备2台主机,一台作为主服务器master,一台作为从服务器slave,信息如下:
主服务器:IP 10.0.10.21 / MySQL版本 5.5
从服务器:IP 10.0.10.22 / MySQL版本 5.5
注意:主从服务器的mysql版本最好保持一致。
二. 主服务器配置
1. 创建复制用户
单独新建一个用户,给其分配replication slave权限,该用户主要是给从服务器用的,从服务器slave会使用该用户连接到主服务器master。
echo "grant replication slave on *.* to '用户名'@'从服务器IP' identified by '密码';" | mysql -uroot -padmin
echo "flush privileges;" | mysql -uroot -padmin
其中,root和admin分别是管理员帐号和密码。
2. 编辑/etc/my.cnf文件
在/etc/my.cnf配置文件中加入如下配置项:
#服务器唯一标识
server-id=1
#需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=db_test
#启动二进制日志系统,此处最好为绝对路径
log-bin="D:/dev/MySQL/MySQL Server 5.5/datalog/log-bin.log"
#是否跳过错误,继续执行复制操作(可选)
slave-skip-errors=all
#函数同步
log-bin-trust-function-creators=1
#确保binlog日志写入后与硬盘同步
sync_binlog=1
3. 重启数据库
service mysqld restart
4. 查看参数
执行以下命令,SHOW MASTER STATUS;记住File和Position两个参数值,从服务器上会用到。
注意:主服务器重启后,这两个参数值会变动, 从服务器会自动同步这两个参数信息。
三. 从服务器配置
1. 编辑/etc/my.cnf文件
在/etc/my.cnf配置文件中加入如下配置项:
#服务器唯一标识
server-id=2
#需要同步的数据库
replicate-do-db=db_test
#忽略错误
slave-skip-errors=all
#同步时间间隔
slave-net-timeout=60
2. 重启数据库
service mysqld restart
3. 开启同步
命令行进入mysql,输入授权命令:
stop slave;
change master to master_host='主服务器ip',master_user='连接主服务器的用户',master_password='连接主服务器的密码',master_log_file='对应主服务器上File参数值', master_log_pos=对应主服务器上Position参数值;
输入命令start slave;,开启slave同步功能。
4. 查看同步状态
命令行输入以下命令:
SHOW SLAVE STATUS;
至此,MySQL的主从复制就配置完成了。
注意:mysql的主从同步方式为增量同步,所以对于主库上原有的数据,需要手动复制到从库上。