mysql主从教程_mysql主从同步详细教程

bc3f9276acf88283a0569b9b9ef9ee92.png

在线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表之间数据的高效同步,他可以对表数据进行单向和双向同步。他可以同步单个表或整个库。它不同步表结构,索引或任何其他架构对象。因此,在修复一致性之前,您需要确保它们的表存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值