SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。
安装包下载地址:https://www.syncnavigator.cn/Setup.zip
帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm
Web文档地址:https://www.syncnavigator.cn/chm/index.htm
一, 概述
MySQL 从3.23.15 版本开始提供数据库复制(复制)功能,利用该功能可以实现两个数据库同步,主从模式,相互备份模式的功能。本文档主要解决了如何在Linux 系统中利用MySQL 的复制进行双机热备的配置。
二, 环境
操作系统:Linux 2.6.23.1-42.fc8#SMP (不安装XEN )
mysql 版本:5.0.45 -4.fc8
设备环境:PC (或者虚拟机)两台
三, 配置
数据库同步复制功能的设置都在MySQL 的配置文件中体现,MySQL 的配置文件(一般是my.cnf ):在本环境下为/etc/my.cnf 。
3.1设置环境:
IP 的设置:
一个主机IP :10.10.0 0.119
遮罩:255.255.0.0
乙主机IP :10.10.8 0.112
遮罩:255.255.0.0
在IP 设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令服务iptables的状态查看防火墙状态。如果防火墙状态为仍在运行。使用服务iptables的停止来停用防火墙。如果想启动关闭防火墙,可以使用setup 命令来补充或定制。
最终以两台主机可以相互ping 通为佳。
3.2配置A主(master)B从(slave)模式
3.2.1配置A为master
1 ,增加一个用户同步使用的帐号:
*。*到'backup'@'10.10.8.112'的GRANT FILE ON;'1234';
GRANT REPLICATION SLAVE ON * * TO 'backup'@'10.10.8.112' IDENTIFIED BY '1234'。
受益10.10.8 .112 也就是Slave 机器有文件权限,只授予Slave 机器有文件权限还不行,还要给它REPLICATION SLAVE 的权限才可以。
2 ,增加一个数据库作为同步数据库:
创建数据库测试;
3 ,创建一个表结构:
创建表mytest(用户名varchar(20),密码varchar(20));
4 ,修改配置文件:
修改A 的/etc/my.cnf 文件,在my.cnf 配置项中加入以下配置:
服务器ID = 1 #Server 标识
日志箱
binlog-do-db = test#指定需要日志的数据库
5 ,重起数据库服务:
服务mysqld重启
查看服务器ID :
显示类似“ server_id”的变量;
实例:
mysql>显示类似“ server_id”的变量;
+ --------------- ++ -------- +
| 变量名| 价值|
+ --------------- ++ -------- +
| server_id | 1 |
+ --------------- ++ -------- +
设置1行(0.00秒)
6 ,用show master status /状态。
正常为:
mysql>显示主服务器状态/ G
*************************** 1.行******************** *******
档案:mysqld-bin.000002
位置:198
Binlog_Do_DB:测试,测试
Binlog_Ignore_DB:
设置1行(0.08秒)
3.2.2配置B为从属
1 ,增加一个数据库作为同步数据库:
创建数据库测试;
2 ,创建一个表结构:
创建表mytest(用户名varchar(20),密码varchar(20));
3 ,修改配置文件:
修改B 的/etc/my.cnf 文件,在my.cnf 配置项中加入以下配置:
服务器ID = 2
master-host = 10.10。0.119
master-user = backup#同步用户帐号
主密码= 1234
主端口= 3306
master-connect-retry = 60#预设重试间隔60 秒
copy -do-db = test#告诉奴隶只做backup 数据库的更新
5 ,重起数据库服务:
服务mysqld重启
查看服务器ID :
显示类似“ server_id”的变量;
实例:
mysql>显示类似“ server_id”的变量;
+ --------------- ++ -------- +
| 变量名| 价值|
+ --------------- ++ -------- +
| server_id | 2 |
+ --------------- ++ -------- +
设置1行(0.00秒)
6 ,用显示从属状态/状态。
正常为:
mysql>显示从属状态/ G
*************************** 1.行******************** *******
Slave_IO_State:等待主机发送事件
主主机:10.10.0.119
Master_User:备份
主端口:3306
Connect_Retry:60
Master_Log_File:mysqld-bin.000001
Read_Master_Log_Pos:98
Relay_Log_File:mysqld-relay-bin.000003
中继日志位置:236
Relay_Master_Log_File:mysqld-bin.000001
Slave_IO_Running:是
Slave_SQL_Running:是
Replicate_Do_DB:测试,测试
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
跳过计数器:0
Exec_Master_Log_Pos:98
Relay_Log_Space:236
直到条件:无
直到日志文件:
直到日志记录位置:0
Master_SSL_Allowed:否
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
设置1行(0.01秒)
3.2.3验证配置
分别使用插入,删除,更新在A 主机进行增删改改查数据库;查看B 主机的数据库是否与A 主机一致;若一致,则配置成功。
3.3双机互备模式
如果在A 主机加入从属设置,在B 主机加入主设置,则可以做B-> A 的同步。
1 ,在一个主机的配置文件中的mysqld 配置项加入以下设置:
主主机= 10.10.8.112
主用户=备份
主密码= 1234
复制数据库-测试
master-connect-retry = 10
2 ,在B 的配置文件中mysqld 配置项加入以下设置:
日志箱
binlog-do-db = test
注意:当有错误产生时,* .err 日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,从属启动。
重起A ,B 机器,则可以实现双向的热备份。
四, 常见问题及解决
1 ,Slave 机器的权限问题,不但要给slave 机器文件权限,还要给它REPLICATION SLAVE 的权限。
2 ,在修改完Slave 机器/etc/my.cnf 之后,slave 机器的mysql 服务启动之前,记得要删除掉master.info
3 ,在显示主机状态或着显示从机状态不正常时,看看.err 是怎样说的。
4 ,从站上的Mysql 的复制工作有两个线程,I / O线程和SQL线程。 I / O 的作用是从主3306 端口上把它的二进制日志取过来(主在被修改了任何内容之后,就会把修改了什么写到自己的binlog 等待slave 更新),然后写到本地的relay-log,而SQL线程则是去读本地的relay-log,再把它转换成本Mysql 所能理解的语句,于是同步就这样一步一步的完成。决定I / O线程的是/var/lib/mysql/master.info,而决定SQL线程的是/var/lib/mysql/relay-log.info。
5,启动slave,命令用start slave;重新启动用restart slave