mysql生产环境高可用基于GTID异步复制项目实施

此文转载自:https://blog.csdn.net/hlhy0906/article/details/110008088#commentBox

客户需求:
客户需要上线一个门户网站,初期业务量非常小,数据量10个G,后台需要使用msyql 数据库,需要建设一个数据库环境

项目技术:
操作系统:两台linux系统 红帽6.5
数据库版本:msyql 5.7.22
数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用GTID+mysqlreplicate+异步复制技术。
主库ip: 192.168.1.51 3306
从库ip ; 192.168.1.52 3306

工具:
mysql-utilities-1.6.5.tar.gz

cd /soft
tar zxvf mysql-utilities-1.6.5.tar.gz

cd mysql-utilities-1.6.5.
python setup.py build
python setup.py install
编译–安装

查看是否按照成功
mysqlreplicate --help

主库上操作:
1.创建复制用户 【主库和从库都要创建】
mysql -uroot -proot
create user ‘repuser’@’%’ identified by ‘repuser123’;
grant replication slave on . to ‘repuser’@’%’;
flush privileges;
select user,host from mysql.user;
exit;

192.168.1.51(master)

vi /mysql/data/3306/my.cnf

#master add parameter
log_bin=/mysql/log/3306/binlog/itpuxdb-binlog
log_bin_index=/mysql/log/3306/binlog/itpuxdb-binlog.index
binlog_format=row
binlog_rows_query_log_events=on

#master modify parameter
bind-address=0.0.0.0
server_id=513306
skip_name_resolve = on
expire_logs_days = 7
innodb_support_xa =1
binlog_cache_size = 1M
max_binlog_size = 2048M
log_bin_trust_function_creators = 1
innodb_flush_log_at_trx_commit =1
sync_binlog = 1
transaction-isolation = read-committed

gtid_mode = on
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery=1

2.从库上操作

192.168.1.52(slave)

vi /mysql/data/3306/my.cnf

#slave add parameter
log_bin=/mysql/log/3306/binlog/itpuxdb-binlog
log_bin_index=/mysql/log/3306/binlog/itpuxdb-binlog.index
binlog_format=row
binlog_rows_query_log_events=on

#slave modify parameter
bind-address=0.0.0.0
server_id=523306

skip_name_resolve = on
expire_logs_days = 7
innodb_support_xa =1
binlog_cache_size = 1M
max_binlog_size = 2048M
log_bin_trust_function_creators = 1
innodb_flush_log_at_trx_commit =1
sync_binlog = 1
transaction-isolation = read-committed

gtid_mode = on
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery=1

#slave parameter
relay_log = /mysql/log/3306/relaylog/itpuxdb-relay.log
read_only=1
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=table
relay_log_info_repository=table
relay_log_recovery=1
slave_skip_errors = ddl_exist_errors
slave_preserve_commit_order=1

3.配置了以上操作之后,重启两台mysql

4.在主库上查看binlog
mysql -uroot -proot
show master status;

5.在从库上使slave 与 master 建立连接,从而同步。

主库上操作:
mysqlreplicate --master=root:root@192.168.1.51:3306 --slave=root:root@192.168.1.52:3306 --rpl-user=repuser:repuser123 -b

检查
mysqlreplicate --master=root:root@192.168.1.51:3306 --slave=root:root@192.168.1.52:3306 --rpl-user=repuser:repuser123 --test-db=testdb

检查从库
mysqlrplcheck --master=root:root@192.168.1.51:3306 --slave=root:root@192.168.1.52:3306 -s

验证数据是否一致
mysqlrplsync --master=root:root@192.168.1.51:3306 --slave=root:root@192.168.1.52:3306

6.主从验证
在主库创建数据库 数据表 插入数据 创建用户

在从库用 主库创建的用户登录,并查看数据

原文地址:https://www.cnblogs.com/phyger/p/14034998.html