热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一步一步教你配置MySQL5.6主从同步

主库IP:192.168.56.111主机名:ace备库IP:192.168.56.123主机名:luffyMySQL版本:5.61、确保主库的binlog打开,确保主从库的server-id不

主库IP:192.168.56.111  主机名:ace

备库IP:192.168.56.123 主机名:luffy

MySQL版本:5.6


1、确保主库的binlog打开,确保主从库的server-id不相同

[root@ace mysql]# egrep 'log-bin|server-id' log-bin=/var/lib/mysql/binlog
server-id=1
[root@luffy ~]# egrep 'log-bin|server-id' 

注:我这里备库的binlog也打开了,如果不做链式同步的话备库binlog可不必打开。


2、在主库创建备库复制时使用的用户

mysql> create user 'rep'@'%' identified by 'rep';
Query OK, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to 'rep'@'%';
Query OK, 0 rows affected (0.00 sec)
在备库进行登陆测试

[root@luffy ~]# mysql -urep -prep -h192.168.56.111
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.6.30-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
登陆成功。


3、主库锁表后进行全备

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test1.aaa values (123123);
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
锁表成功

然后备份所有数据库,并加--master-data=1,该参数可在备份文件中生成当前精确的position,备库change master to ... 时可省些事。

[root@ace mysql]# mysqldump -A -B --master-data=1 | gzip > /root/alldb.sql.gz

4、对主库表解锁,并增加部分数据 以 测试备库能否追加备份完成时间点和同步开始时间点之间更新的数据

[root@ace ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 61
Server version: 5.6.30-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use test1;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select * from aaa;+--------+| id |+--------+| 1 || 2 || 3 || 11 || 22 || 33 || 123 || 234 || 123123 |+--------+9 rows in set (0.00 sec)
主库test1库下aaa表中的数据,此时备份文件中完全包括这部分数据,接下来对改变追加数据。

mysql> insert into test1.aaa values (2222);
Query OK, 1 row affected (0.00 sec)

mysql> select * from aaa;
+--------+
| id |
+--------+
| 1 |
| 2 |
| 3 |
| 11 |
| 22 |
| 33 |
| 123 |
| 234 |
| 123123 |
| 2222 |
+--------+
10 rows in set (0.00 sec)

此时2222这条数据是备份集中不存在的。

4、将备份传输到备库进行恢复

[root@ace ~]# scp alldb.sql.gz luffy:/root/
root@sabo's password:
alldb.sql.gz 100% 59MB 59.2MB/s 00:01
[root@ace ~]#

传输完成

在备库change master to ...  并恢复数据

mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.56.111',
-> MASTER_PORT=3306,
-> MASTER_USER='rep',
-> MASTER_PASSWORD='rep';
Query OK, 0 rows affected, 2 warnings (0.03 sec)

[root@luffy ~]# gunzip alldb.sql.gz 
[root@luffy ~]# ls
alldb.dmp Desktop MySQL-client-5.6.30-1.rhel5.x86_64.rpm printABCThread sqrtThread.c test.c~
alldb.sql install.log MySQL-server-5.6.30-1.rhel5.x86_64.rpm printABCThread.c test
anaconda-ks.cfg install.log.syslog mysql.sql sqrtThread test1.dmp
[root@luffy ~]# mysql

可发现当前备库aaa表中无2222那条记录

mysql> select * from aaa;
+--------+
| id |
+--------+
| 1 |
| 2 |
| 3 |
| 11 |
| 22 |
| 33 |
| 123 |
| 234 |
| 123123 |
+--------+
9 rows in set (0.00 sec)

5、开启同步

在开启之前先查看下备库状态

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.56.111
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000036
Read_Master_Log_Pos: 1653511
Relay_Log_File: luffy-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: binlog.000036
Slave_IO_Running: No
Slave_SQL_Running: No
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:
Skip_Counter: 0
Exec_Master_Log_Pos: 1653511
Relay_Log_Space: 120
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_UUID:
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
可以看到Slave_IO_Running 和 Slave_SQL_Running 均为 No, 表明同步未开启

现在开启同步

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.111
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000036
Read_Master_Log_Pos: 1653734
Relay_Log_File: luffy-relay-bin.000002
Relay_Log_Pos: 503
Relay_Master_Log_File: binlog.000036
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
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:
Skip_Counter: 0
Exec_Master_Log_Pos: 1653734
Relay_Log_Space: 676
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 59a2db90-21a2-11e6-ae2e-080027dc3ab7
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)

同步一开启,最后验证下test1的aaa表

[root@luffy ~]# mysql -e 'select * from test1.aaa'
+--------+
| id |
+--------+
| 1 |
| 2 |
| 3 |
| 11 |
| 22 |
| 33 |
| 123 |
| 234 |
| 123123 |
| 2222 |
+--------+

2222那条记录也已经同步完成。

6、同步状态检查(不再赘述)

至此主从复制配置完成



推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
Yao2524_420
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有