MySQL5.6.x 基于GTID的多线程复制-安装配置
操作系统:
RHEL6 Or CentOS6 x86_64
mysql 版本:
mysql-5.6.20
服务器IP:
10.57.1.131 MySQL-Master 10.57.1.132 MySQL-Slave
一、yum安装mysql
# 下载mysql的rpm包
mkdir -pv /root/soft cd /root/soft
#这里提供三个版本的官方64位rpm下载路径,根据自己的系统平台选择对应的rpm下载
# RHEL6 And CentOS6 x86_64 的rpm包
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-test-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.20-1.el6.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-embedded-5.6.20-1.el6.x86_64.rpm
# RHEL5 And CentOS5 x86_64 的rpm包
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-embedded-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-test-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.20-1.rhel5.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.20-1.rhel5.x86_64.rpm
# RHEL7 And CentOS7 x86_64 的rpm包
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-test-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.20-1.el7.x86_64.rpm wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-embedded-5.6.20-1.el7.x86_64.rpm
# 注意上面三项只下载一项即可
# 各rpm包简介
MySQL-server: mysql
# mysql官方提供了7个rpm,当然并不是所有的包都安装的,根据自己的需要选择性的安装刚才下载的几个rpm包
# 一般来说安装 MySQL-server、MySQL-client、MySQL-devel、MySQL-shared、MySQL-shared-compat 这几个rpm包已经足够了,安装如下
# 安装所下载的rpm包
yum localinstall MySQL-server* MySQL-client* MySQL-shared* MySQL-shared-compat* MySQL-devel*
# 将mysql服务设置开机自动启动
chkconfig --add mysql chkconfig mysql on
# 建立mysql数据目录
mkdir -p /data/mysql/data
# 启动mysql服务
server mysql start
二、基于mysql-5.6.x的GTID的多线程复制
1、配置 Master节点
vim /etc/my.cnf
# 内容如下, End结束
[mysqld] # mysql服务器监听的端口 port=3306 # 套接字文件路径 socket=/data/mysql/data/mysql.sock # 数据存储路径 datadir=/data/mysql/data/ # 启用bin-log日志 log-bin=master-bin # binlog日志的格式 binlog-format=ROW # 服务器ID 在主从或主主等环境中的id值一定要是全局唯一的 server-id=1 # 关闭dns解析 skip-name-resolve # 从服务器是否将事件的写操作的信息记录到日志中 log-slave-updates=true # 是否启用GTID的功能 gtid-mode=on # 是否强制GTID的一致性 enforce-gtid-consistency=true # show slave hosts; 所显示的ip及端口 report-port=3306 report-host=10.57.1.131 # slave logs master status and connection information # slave logs ,master status,和连接信息 是记录在文件(FILE)中还是表(TABLE)中 master-info-repository=TABLE relay-log-info-repository=TABLE # 同步master-info信息 sync-master-info=1 # 从服务器的sql线程数,值最好跟数据库的个数一致,0表示禁用多线程功能 slave-parallel-workers=2 # 是否校验binlog日志的完整性,以下三个选项是启用在复制功能中的校验功能 binlog-checksum=CRC32 master-verify-checksum=1 slave-sql-verify-checksum=1 # 启用用于在而进制日志记录事件的相关信息,可降低故障排除的复杂度 binlog-rows-query-log_events=1 [mysqld_safe] log-error=/var/log/mysqld.log [client] socket=/data/mysql/data/mysql.sock # End
# 初始化mysql数据库
/usr/bin/mysql_install_db --user=mysql --datadir=/data/mysql/data
# 重启mysql服务
service mysqld restart
# 创建复制用户
mysql> GRANT REPLICATION SLAVE ON *.* TO slave@"10.57.1.131" IDENTIFIED BY 'redhat'; mysql> FLUSH PRIVILEGES;
2、配置Slave节点
vim /etc/my.cnf
# 内容如下, End结束
[mysqld] datadir=/data/mysql/data port=3306 socket=/data/mysql/data/mysql.sock log-bin=mysql-bin server-id=2 slave-parallel-workers=2 binlog-format=ROW log-slave-updates=true gtid-mode=on enforce-gtid-consistency=true master-info-repository=TABLE relay-log-info-repository=TABLE sync-master-info=1 binlog-checksum=CRC32 master-verify-checksum=1 slave-sql-verify-checksum=1 binlog-rows-query-log_events=1 report-port=3306 report-host=10.57.1.132 [mysqld_safe] log-error=/var/log/mysqld.log [client] socket=/data/mysql/data/mysql.sock # End
# 重启mysql服务
service mysqld restart
mysql> CHANGE MASTER TO MASTER_HOST='10.57.1.131', MASTER_USER='slave',MASTER_PASSWORD='redhat', MASTER_AUTO_POSITION=1;
mysql> START SLAVE;
3、测试
# 首先在主库上执行一个写操作,然后在从库上看有没有同步过来即可
本文出自 “让一切随风” 博客,谢绝转载!