记得以前使用MySQL学习过其在线备份功能,很好很强大,利用该功能可以实现多个数据库的数据同步,主从模式,互相备份模式。
数据库其同步复制的功能的设置在MySQL的配置文件中体现。MySQL的配置文件其安装的目录下的my.ini或my.cnf。
设置方法如下:
假设 A IP:192.168.1.10
B IP:192.168.1.20
A:设置
1.增加一个用户最为同步的用户帐号:
# @‘B的IP地址’ 123456是B数据库的密码
GRANT FILE ON *.* TO backup@'192.168.1.20' IDENTIFIED BY ‘123456’
2.增加一个数据库作为同步数据库:
create database backup
B:设置
1.增加一个用户最为同步的用户帐号:
# @‘A的IP地址’ 123456是A数据库的密码
GRANT FILE ON *.* TO backup@'192.168.1.10' IDENTIFIED BY ‘123456’
2.增加一个数据库作为同步数据库:
create database backup
主从模式:A->B
A为master
修改A MySQL的my.ini(or my.cnf)文件。在mysqld配置项中加入下面配置:
server-id=1
log-bin
#设置需要记录log 可以设置log-bin=\home\mysql\mysqllog 设置日志文件的目录,
#其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件。
#指定需要日志的数据库
binlog-do-db=backup
重起数据库服务
用show master status 命令看日志情况。
mysql> show master status;
B为slave
修改B 同上。在mysqld配置项中加入下面配置:
server-id=2
master-host=192.168.1.10 #A的IP地址
master-user=backup #同步用户帐号
master-password=123456 #A数据库的密码
master-port=3306
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=backup #设置slave只做backup数据库的更新
54coc
重起数据库
同上。
注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
双机互备模式
如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
在A的配置文件中 mysqld 配置项加入以下设置:
master-host=192.168.1.20 #B的IP地址
master-user=backup
master-password=123456 #B数据库的密码
replicate-do-db=backup
master-connect-retry=10
在B的配置文件中 mysqld 配置项加入以下设置:
log-bin=\home\mysql\mysqllog
binlog-do-db=backup
注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
重起AB机器,则可以实现双向的热备。
测试:
向B批量插入大数据量表X(100)条
A数据库每秒钟可以更新多条数据。
手动备份:
# 备份数据库
mysqldump -uroot -proot 192.168.1.10 > back.sql
# 恢复数据
mysql -uroot -padmin 192.168.1.10 < back.sql