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 [email protected]‘192.168.2.22‘ IDENTIFIED BY ‘123‘;
mysql> flush privileges;
 

授权格式为:GRANT REPLICATION SLAVE ON *.* TO [email protected]‘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 的三种格式 STATEMENTROWMIXED,详见 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)

此处需记录 FilePosition 两个值,下面从库的 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!

时间: 2024-08-28 20:11:51

MySQL(Percona Server) 5.6 主从复制的相关文章

Linux 下编译安装 MySQL(Percona Server) 5.6

系统环境: CentOS 6.5 / 7.0 x86_64 Fedora 20 x86_64 简介 Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server 的编译.配置和使用与 MySQL 完全一致,你完全可以把它当成是 MySQL 来使用. 下载 Percona Server 源码包 cd /usr/local/src wget https://www

MySQL Percona server 5.5 安装审计插件

近期,公司要求对MySQL 数据库上操作进行审计:通过了解MySQL 官方企业版(付费版)本中集成了audit_log审计插件,但是社区开源版本中并不包含该插件,也没提供下载.进一步了解 MariaDB 有一个名为server_audit.so审计插件,据传以前是可以独立下载的.但是我在官网没找到下载链接,索性下载一个MariaDB 5.5.50 的二进制安装包,解压后从中捞一个 server_audit.so 文件, 1.登录数据库,查看plugin_dir目录mysql> SHOW GLOB

MySQL Study之--Percona server 5.5升级5.6

MySQL Study之--Percona server 5.5升级5.6 系统环境:      操作系统:CentOS_6.5(64)            MySQL:   Percona server 5.5(5.6) 一.升级的目的 为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量, 修复的bug. 但是在没有充分的测试以前就应用到你的应用中是非常危险的, 因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外, 我建议你关注MyS

MySQL Study之--Percona Server版本号

MySQL Study之--Percona Server版本号 1.简单介绍 Percona 为 MySQL 数据库server进行了改进,在功能和性能上较 MySQL 有着非常显著的提升.该版本号提升了在高负载情况下的 InnoDB 的性能.为 DBA 提供一些非常实用的性能诊断工具:另外有很多其它的參数和命令来控制server行为. 2.特点 Percona Server 仅仅包括 MySQL 的server版,并没有提供对应对 MySQL 的 Connector 和 GUI 工具进行改进.

MySQL Study之--Percona Server版本

MySQL Study之--Percona Server版本 1.简介     Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升.该版本提升了在高负载情况下的 InnoDB 的性能.为 DBA 提供一些非常有用的性能诊断工具:另外有更多的参数和命令来控制服务器行为. 2.特点 Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进.Percona Serve

Percona Server 5.6 RPM 快速安装&快速完全卸载

1.先快速安装,然后进行学习,参数文件慢慢再来学习. 安装包下载到/tmp路径下 # tar -xvf Percona-Server-5.6.34-79.1-r1c589f9-el6-x86_64-bundle.tar # ls *.rpm # rpm -ivh Percona-Server-shared-56-5.6.34-rel79.1.el6.x86_64.rpm # rpm -ivh Percona-Server-client-56-5.6.34-rel79.1.el6.x86_64.r

mysql5.5.46升级到Percona Server 5.6.27

1.升级前的准备 查看本机openssl版本 [email protected] mysql5.6]# rpm -qa | grep ssl openssl-1.0.1e-42.el6_7.2.x86_64 openssl-devel-1.0.1e-42.el6_7.2.x86_64 https://www.percona.com/downloads/Percona-Server-5.6/LATEST/软件下载地址 Percona-Server-5.6.27-rel75.0-Linux.x86_

Linux 下 YUM 安装 Percona Server 5.6

Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server 的使用和 MySQL 完全一致,你完全可以把它当成是 MySQL 来使用. 安装 Percona Server 编辑 Percona.repo: # vi /etc/yum.repos.d/Percona.repo 添加以下内容: [percona] name = CentOS $releaseve

Ubuntu Server 16.04 安装 Percona Server 5.7 来代替 MySQL 或 MariaDB详细教程

本文标签:    Ubuntu MySQL UbuntuServer PerconaServer MySQL数据库服务器性能优化 互联网杂谈 一.这货是什么? Percona 为 MySQL数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升.该版本提升了在高负载情况下的 InnoDB 的性能.为 DBA 提供一些非常有用的性能诊断工具:另外有更多的参数和命令来控制服务器行为.Via 经过长期实践以及生产环境测试, Percona Server 的性能和稳定性比原生的 MySQ