赞
踩
在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
示例:
如果需要同步test1和test2数据库,请执行以下操作。
系统:centos7
主库主机:192.168.1.252 \
从库主机:192.168.1.251 \
端口是:3306
(1)。打开主数据配置文件my.cnf并添加以下项目
server_id = 1 # 唯一标识,主服务器和从服务器无法重复
log_bin = mysql-bin # 打开日志
binlog_format =混合# 记录格式
max_binlog_size = 512M # 最大的单个日志文件
expire_logs_day = 3 # 日志有效期(天)
binlog_do_db = test1,test2 # 记录这些数据库
binlog_ignore_db = mysql,performance_schema,information_schema # 日志记录将忽略那些数据库
(2),重新启动mysql(service mysql restart)
(3),在主库中创建一个用于同步的用户(当然,您也不能使用它,直接使用现有的一个,但是为安全起见,建议创建一个)
授予 复制 slave *。 * 到 " 奴隶 " @ " 192.168.1.253 "通过标识为通过" 123456 ";
该从用户的密码为123456,但具有同步权限,只能在192.168.1.253上连接。
如果数据库数据已经在主库中,则必须执行以下操作:
刷新表,然后锁定表(仅允许检查数据而不写数据):
刷新表带有 读取锁定;
然后备份要同步的数据库数据,然后将其复制到从属库
mysqldump-uroot-p test1 \> test1.sql;
mysqldump-uroot-p test2 \ gt; test2.sql; # 从库中,必须首先创建数据库test1和test2,然后导入数据
mysql-uroot-p test1 \ lt; test1.sql;
mysql -uroot-p test1 \ lt; test2.sql;
主库执行:显示主状态;写下Position和File的值,然后使用它来配置从属库。
+——————+———-+————–+——————+
|档案|职位| Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000023 | 2720 | test1,test2 | mysql \
+——————+———-+————–+——————+
(1),修改配置文件my.cnf
server_id = 2
log_bin = mysql-bin#打开日志
binlog_format = MIXED#记录格式
max_binlog_size = 512M#最大的单个日志文件
expire_logs_day = 3#日志有效期(天)
复制_do_db = test1,test2#在从站上配置,指定从站将复制哪个库
复制-ignore-db = mysql,performance_schema,information_schema#在从属服务器上配置,指定从属服务器应忽略哪个库
relay_log_recovery = 1#建议从库开始,这有利于数据一致性
log_slave_updates = 1#如果将从库用作主库,建议将其打开
(2),重新启动从属库,执行以下命令(首先停止同步,然后设置同步信息,master_log_file和master_log_pos在我们的主库上方)
停止从属;
将主 更改为 master_host = " 192.168.1.252 " ,
master_user = " slave " ,
master_password = " 123456 " ,
master_port = 3306 ,
master_log_file = " mysql-bin.000023 " ,
master_log_pos = 2720 ;
从属启动
(3),从库中执行:show slave status \\\\ G;检查是否正常
主要取决于这些项目;
lave_IO_Running:是
Slave_SQL_Running:是
Master_Log_File:mysql-bin.000023
Relay_Master_Log_File:mysql-bin.000023
Read_Master_Log_Pos:2720
Exec_master_log_pos:2720
解锁表;
方法1:忽略错误后,继续同步
此方法适用于主数据库和从数据库之间的数据差异不大,或者数据要求未完全统一且数据要求不严格。
解决方案:
停止从属; #表示跳过一级错误,后面的数字是变量
设置全局sql_slave_skip_counter = 1;
启动奴隶;
,然后使用状态\\\\ G视图:
Slave_IO_Running:是
Slave_SQL_Running:是
方法2:重新控制主数据库和从数据库,完全同步
此方法适用于主数据库和从数据库之间的数据差异很大,或者要求数据完全统一的情况。
解决方法步骤如下:输入主库并锁定表以防止写入数据。
使用命令:
mysql \ gt;用读锁刷新表;
注意:该位置被锁定为只读,并且该语句对大小不敏感写
2.进行数据备份
#将数据备份到mysql.bak.sql文件
mysqldump-uroot-p-hlocalhost \ gt; mysql.bak./>:必须定期执行数据库备份,可以使用shell脚本或python脚本,它们更加方便以确保数据安全。
3.查看主服务器状态
mysql \ gt;显示主人身份;
—————-+———-+————–+—————————–+
|填写|职位| Binlog_Do_DB | Binlog_Ignore_DB |
+——————-+———-+————–+——————————-+
| mysqld-bin。 000001 | 3260 | | mysql,测试,information_schema |
+——————-+———-+————–+——————————-+
4.将mysql备份文件传输到从机进行数据恢复。
#使用scp命令
[root @ server01 mysql]#scp mysql.bak.sql root/192.168.1.0/
5.停止从属库的状态
mysql \ gt;停止奴隶;
6.然后从库中执行mysql命令并导入数据备份
bak.sql
7.从库中设置同步,请注意此处的同步点主库显示主状态信息|档案|放置两个项目,将master更改为master_host =” 192.168.128.100″,master_use r =” rsync”,master_port = 3306,master_password =””,master_log_file =” mysqld-bin.000001″,master_log_pos = 3260;
8.重新启动从属同步
mysql \ gt;启动奴隶;
9.检查同步状态
mysql>显示从属状态\\\\ G视图:
Slave_IO_Running:是
lah
\ 10.解锁主库
mysql \> 解锁表;
这两个软件也很方便,您可以去了解
pt-table-checksum:通过在主服务器上执行检查查询来检查复制的一致性,并比较主服务器和从服务器的检查值以产生结果。 DSN指向主地址。工具的退出状态不为零。如果发现任何差异,或者出现任何警告或错误,请检查官方信息以获取更多信息。
pt-table-sync:MySQL表之间数据的高效同步,他可以对表数据进行单向和双向同步。他可以同步单个表或整个库。它不同步表结构,索引或任何其他架构对象。因此,在修复一致性之前,您需要确保它们的表存在。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。