mysql实时同步备份
MySQL 实时同步简明操作手册。
一、前言:
1.1 环境描述
主机一台,IP地址为:192.19.100.72
备机一台,IP地址为:129.19.100.245
1.2 效果描述
按本文档进行配置后,主机数据库里的数据,除了日志信息外,都可以实时备份到备机中。例如,在主机中删除、增加操作,都会实时更新到备机的数据库里。
主机和备机的日志文件不会互相交换和覆盖。对主机或者副机的操作日志都分别记录在各自的数据库中。
二、配置(用root用户身份进行操作,此步骤目前已经配置好了,只有在全新装机器的情况下才需要做):
2.1 需要在主机上进行的配置
打开主机中的"/etc/my.cnf"文件。
在文件中添加(注意,有可能文件中有部分内容已存在):
[mysqld]
#Replication master
server-id = 10
log-bin=mysql-bin
binlog-do-db=activedb
2.2 需要在备机上进行的配置
打开备机中的"/etc/my.cnf"文件。
在文件中" # Replication slave "一句后面添加(注意,有可能文件中有部分内容已经预先存在):
master-host=192.10.100.72 //*在备机上设主机的地址
master-user=root
master-password=pass
msster-port=3306
master-connect-retry=60
replicate-do-table=activedb.carduser
replicate-do-table=activedb.ktokens
replicate-do-table=activedb.sstatus
replicate-do-table=activedb.systemuser
replicate-do-table=activedb.sysemuserrolerelat
replicate-ignore-do-table=activedb.klog //*主机中的日志表不同步到备机中
两边重启机器或者重启数据库以后,备机就能自动到主机中去请求同步。全过程无需人工干预。
2.3 注意事项
注意:备机可以正常查看数据,启动或者停止服务,进行令牌同步、测试、解锁等操作。
但千万不要删除或者增加用户(包括系统用户)、令牌等信息!!!
也不要把备机上的操作当作日常操作经常使用!
三、切换(在主备机互相转换身份的时候需要配置,以root身份进行下面的操作:)
3.1 在原备份机上的操作:
在原来的备机"/etc/my.cnf"文件里把下列语句全部删除(或在行首用#号全部注释掉): //*注意,是在原来的备机上操作!!
master-host=192.10.100.72
master-user=root
master-password=pass
msster-port=3306
master-connect-retry=60
replicate-do-table=activedb.carduser
replicate-do-table=activedb.ktokens
replicate-do-table=activedb.sstatus
replicate-do-table=activedb.systemuser
replicate-do-table=activedb.sysemuserrolerelat
replicate-ignore-do-table=activedb.klog
3.2在原主机上的操作
原来用做主机的服务器中"/etc/my.cnf"文件里找到# Replication slave(comment out master section to use this),紧接其后添加如下语句:
master-host=129.19.100.245 //*注意此处的IP地址,此处填写新主机的IP地址。
master-user=root
master-password=pass //*注意数据库的用户名和密码
msster-port=3306
master-connect-retry=60
replicate-do-table=activedb.carduser
replicate-do-table=activedb.ktokens
replicate-do-table=activedb.sstatus
replicate-do-table=activedb.systemuser
replicate-do-table=activedb.sysemuserrolerelat
replicate-ignore-do-table=activedb.klog
重启两边数据库,即可。
3.3 互换后再换回来的操作:
主机和备机互相交换后,如果还需要再换回来,则不仅要注意3.1和3.2条的事项,并且请参考4.2条,删除"/var/lib/mysql"目录下的master.info文件,并重启数据库,才能生效。
四、排错:
4.1、查看是否生效:
如果数据库实时同步成功,则在主机启动认证服务的同时,备机的服务也会起来。此时登录到备机,查看备机的服务是否跟随主机即时启动或者即时停止,即可判断。
4.2、如果要更换主机的IP地址,则不仅要在备机的"/etc/my.cnf"里更改"master-host=*.*.*.*"后面的IP地址值。并且需要删除"/var/lib/mysql"目录下的master.info文件。如果要更改备机的地址,则无需做任何改变。
4.3、主机和备机通过"3306"端口通信。需要开放相应防火墙端口。
4.4、通过在备机中输入"# mysql -u root -p"命令,进入"mysql>"命令行模式,可以进行更细化的排错。
4.4.1 启动和关闭数据库备份:
mysql>slave stop; //**启用备份,注意语句后面的分号
mysql>slave start; //**停止备份
4.4.2 查看备机启动状态:
mysql> show slave status\G //**查看状态,注意语句后面没有分号
其中:Slave_IO_Status的值必须为:Waiting for master to send event
Slave_IO_Running和Slave_SQL_Running的值必须为Yes
如果Last_IO_Errorno不为零且Last_IO_error后面有错误语句提示,则在请输入以下语句:
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; //**此为跳过同步错误。注意:n的值为上面看到的Last_IO_Errorno的值。
然后用4.4.1所提示的方法重启slave服务。
4.4.3查看备机进程:
mysql>show processlist\G //**查看进程列表,注意语句后面没有分号
此时会提示正在同步的进程SQL语句。或者提示State:Has read all relay log;waiting for the slave I/O thread to update it