MySQL(Percona Server) 5.6 主从复制
MySQL(Percona Server) 5.6.15
主库:192.168.2.21
从库:192.168.2.22
例如我们同步的数据库为:test。 如果需要同步多个数据库下面会有说明。
MySQL 主从复制原理
1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
2. slave将master的binary log events拷贝到它的中继日志(relay log);
3. slave重做中继日志中的事件,将改变反映它自己的数据。
主库(192.168.2.21):
主库开放 3306 端口
# /sbin/iptables -I INPUT -s 192.168.2.0/24 -p tcp --dport 3306 -j ACCEPT # service iptables save
查看开放的端口:
# service iptables status
或
# iptables -L -n
授权同步账户
mysql> GRANT REPLICATION SLAVE ON *.* TO rep@'192.168.2.22' IDENTIFIED BY '123';
mysql> flush privileges;
授权格式为:GRANT REPLICATION SLAVE ON *.* TO username@'ipaddress' IDENTIFIED BY 'password'。
现在可以在 192.168.2.22 从库上测试是否可以访问:
# /usr/local/mysql/bin/mysql -h192.168.2.21 -urep -p123
配置主库 my.cnf
# vi /etc/my.cnf [mysqld]
log-bin=mysql-bin #开启 MYSQL 二进制日志
server-id=1 #主库服务器 ID,注意服务器 ID 不能重复
binlog-do-db=test #需要做主从备份的数据库名,如果复制多个数据库,重复设置这个选项即可
expire-logs-days=7 #只保留 7 天的二进制日志,以防磁盘被日志占满
binlog_format=MIXED #设置 binlog 的格式为 MIXED
binlog 的三种格式 STATEMENT、ROW、MIXED,详见 MySQL Binlog ROW 和 STATEMENT 选择。
可以通过 show variables like 'binlog_format'; 查看。
保存,重启 MySQL:
# service mysql restart
拷贝主库需要同步的数据到从库
进入 mysql 终端 /usr/local/mysql/bin/mysql -uroot -p:
设置主库成只读状态
mysql> use test;
mysql> FLUSH TABLES WITH READ LOCK;
重置 binlog 日志
mysql> RESET MASTER;
查看运行状态
mysql> SHOW MASTER STATUS\G;
******************* 1. row *******************
File: mysql-bin.000001
Position: 120
Binlog_Do_DB: test
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
此处需记录 File 和 Position 两个值,下面从库的 CHANGE MASTER TO 命令中需要用到这两个值。
接下来切换到从库服务器,导出主库中需要同步的数据,并导入到从库:
# /usr/local/mysql/bin/mysqldump -h192.168.2.21 -urep -p test > dumptest.db
# /usr/local/mysql/bin/mysql -uroot -p test < dumptest.db
再回到主库服务器, 解锁主库数据库只读状态
mysql> UNLOCK TABLES;
从库(192.168.2.22):
配置从库 my.cnf
# vi /etc/my.cnf [mysqld]
server-id=2 #从库服务器 ID,注意服务器 ID 不能重复
replicate-do-db=test #需要做复制的数据库名,如果复制多个数据库,重复设置这个选项即可
slave-skip-errors=1032,1062,126,1114,1146,1048,1396 #自动跳过的错误代码,以防复制出错被中断
如果数据库中有不需要同步的表可以添加 replicate-ignore-table=table_name,... 配置项,自动跳过这些表。
保存,重启 MySQL:
# service mysql restart
指定主库
进入 MySQL 终端:
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.2.21',
MASTER_USER='rep',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=120;
启动从库连接
mysql> start slave;
查看从库状态
mysql> SHOW SLAVE STATUS\G;
......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
两个 Yes 成功。
测试
现在可以在主库中插入/更新数据,添加表等操作,看从库是否可以同步相应的数据。
问题
在最后使用 SHOW SLAVE STATUS\G; 查看 slave 运行状态时,有一个错误:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
server uuid 是从 MySQL 5.6 开始添加进来的, 由于我偷了个懒,从库是直接在 VirtualBox 中 Clone 的主库,所以 /var/lib/mysql/auto.cnf 文件中的 server-uuid 的值是一样的。 随便改一个值,但是值的格式不能变,不与群组中的其他 server-uuid 重复即可。
改完之后,重启 mysql:
# service mysql restart
再次使用 SHOW SLAVE STATUS\G; 查看状态正常。
附两个小命令:
mysql> SHOW SLAVE HOSTS; #需在 master 中执行,查看 slave 列表,包括相应的 server-uuid 值
mysql> show variables like 'server_uuid'; #查看本机的 server-uuid 值
Good Luck!
MySQL(Percona Server) 5.6 主从复制的更多相关文章
- MySQL Percona server 5.5 安装审计插件
近期,公司要求对MySQL 数据库上操作进行审计:通过了解MySQL 官方企业版(付费版)本中集成了audit_log审计插件,但是社区开源版本中并不包含该插件,也没提供下载.进一步了解 MariaD ...
- MySQL Study之--Percona Server版本号
MySQL Study之--Percona Server版本号 1.简单介绍 Percona 为 MySQL 数据库server进行了改进.在功能和性能上较 MySQL 有着非常显著的提升. ...
- Linux 下 YUM 安装 Percona Server 5.6
Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server ...
- MySQL社区版升级到Percona Server
出于磁盘空间的考虑,在调研以后把磁盘空间紧张的库的引擎改为tokudb,(在改为tokudb引擎之前是innodb引擎,已经压缩过,但空间还是紧张)关于tokudb的优势各位自行查阅相关资料.要启用t ...
- mysql 5.7/percona server/mariadb 10.2安装与服务器参数优化
建议使用percona server linux generic版,从https://www.percona.com/downloads/Percona-Server-LATEST/下载,现在不在推荐 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- percona server 二进制安装下编译tpcc-mysql的坑
出于习惯,percona server的部署都是通过二进制包自动化安装,结果遇到一个硕大无比的坑,编译TPCC-MySQL时出现警告 10:49:36 root@DB-Master:~/tpcc-my ...
- Percona Server 5.6.33-79.0 发布
Percona Server 5.6.33-79.0 发布了,该版本基于 MySQL 5.6.33,包含了所有的 bug 修复,是Percona Server 5.6 系列中的正式版本.该版本主要是修 ...
- Percona Server 5.6.13-61.0 首个 GA 版本发布
Percona Server 5.6 的首个 GA 版本发布了,版本号是 5.6.13-61.0 ,该版本基于 MySQL 5.6.13 改进内容包括: New Features: Percona S ...
随机推荐
- 一段freemarker高级分页效果的代码
<a onclick="page(1)">首页</a> [#if currpage != 1] [#assign last=currpage - 1] &l ...
- Silicon C8051F340之GPIO口配置与使用
一.背景: 很久前用过C8051,现在有相关需求需要重新使用C8051,然后发现一年前开发的相关经验都忘得 基本上差不多了.连最基本的GPIO口配置还得重新来看手册,所以有此文,做个记录,以备下次快速 ...
- jquery1.9以上版本如何使用toggle函数
toggle() 方法用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件. 但是在1.9及以上的版本中已经删除了该功能. 感觉这个功能还是不错的,以下来自网上搜集,可以在js中 ...
- sqlserver实现数据库读写分离介绍
对于负载均衡,笔者经常接触的当属Oracle的负载均衡机制.下面我们重点介绍Sql Server 2005是如何实现负载均衡的,感兴趣的朋友可以参考下哈 Internet的规模每一百天就会增长一倍,客 ...
- 学习 opencv---(1) opencv3.1.0 组件结构浅析
本系列是根据 浅墨大神 的opencv系列而写的,,应该大部分内容会一样..如有侵权还请告知........... 开发环境:win7 + VS2013 + opencv3.1.0 至于OpenCV组 ...
- Sublime Text3中Autoprefixer失效解决方法
进入CSS文件,默认配置在按下快捷键(Ctrl+Shift+P)后输入Autoprefix,你会发觉它什么事也没干,然后--这什么鬼?抓狂ing-- 原来是因为这玩意还要配置下,以下为配置方法: Pr ...
- 百度地图用ip获取当前位置的经纬度(高精度)
步骤比较简单先上百度地图API官网,申请一个应用AK(访问凭据):查看一下高进度定位的API,看看是否都符合要求下面直接上代码 /** * 根据ip获取地理坐标 * @param ip * @retu ...
- 创建GitHub博客
1. 创建GitHub账号 GitHub技术博客首先需要GitHub账户,请在官网按照步骤自行注册账号. 2. 创建博客仓库 使用注册的账户登录,然后点击创建仓库,输入项目信息如下所示,注意项目名称规 ...
- epoll示例
书到用时方恨少,一切尽在不言中 #include <iostream> #include <sys/socket.h> #include <sys/epoll.h> ...
- 2017 苹果强制https
苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者更高,TLS 是 SSL 新的别称. ② 通讯中的加密套件配置要求支持列出的正向保密. ...