1 机器准备
2 MysqL双主双从安装配置
2.1 mysql安装教程
2.2 配置和验证
3 mycat的安装
3.1 mycat的配置文件
3.2 验证服务
4 验证读写分离
4.1 验证写操作
4.2 验证读操作
5 主从切换
5.1 故障演示
5.2 恢复master节点
1 机器准备

规划:部署4个MysqL数据库,其中MysqL1 和MysqL2 互为主从,MysqL3是MysqL1的从,MysqL4是MysqL2的从,这里数据库采用的MysqL-5.7.27版本,mycat采用的是Mycat-server-1.6.7.6版本,mysql主从复制。
2 MysqL双主双从安装配置
2.1 mysql安装
四台服务器上都需要安装MysqL数据库,一下操作都需要做一遍,前提是已经上传了MysqL-5.7.27-1.el7.x86_64.rpm-bundle.tar 安装包
解压资源包,检查之前是否安装过其他版本的 MysqL或者 mariadb,如果有则先删除。
#tar -xvf MysqL-5.7.27-1.el7.x86_64.rpm-bundle.tar -C /usr/local/src/
#rpm -qa MysqL mariadb
#yum remove MysqL-libs
#yum -y install perl net-tools
#cd /usr/local/src/
#ll

# rpm -vih MysqL-community-common-5.7.27-1.el7.x86_64.rpm
# rpm -vih MysqL-community-libs-5.7.27-1.el7.x86_64.rpm
# rpm -vih MysqL-community-libs-compat-5.7.27-1.el7.x86_64.rpm
# rpm -vih MysqL-community-client-5.7.27-1.el7.x86_64.rpm
# rpm -vih MysqL-community-server-5.7.27-1.el7.x86_64.rpm
# rpm -vih MysqL-community-devel-5.7.27-1.el7.x86_64.rpm
# rpm -qa | grep MysqL
# systemctl start MysqLd


grep "temporary password" /var/log/MysqLd.log

每个MysqL服务器用初始密码登录后统一修改密码,并设置允许外部连接,然后重启服务。
# MysqL -u root -p
MysqL> show databases;
MysqL> use MysqL;
MysqL> select User,authentication_string,Host from user;
MysqL> alter user root@localhost identified by 'PassWod7&';
MysqL> flush privileges;


设置允许外部连接;创建主从复制账号。
MysqL> grant all privileges on *.* to "root"@"%" identified by "密码";
MysqL> flush privileges;
MysqL> grant replication slave on *.* to 'repl'@'%' identified by '密码';
MysqL> flush privileges;
MysqL> select User,authentication_string,Host from user;

# systemctl restart MysqLd
2.1 修改配置文件
配置/etc/my.cnf,下面是MysqL1上的配置文件内容,MysqL2和MysqL1上MysqL的配置文件内容一致,只是要自增长初始值为2,和修改server-id参数即可。
# vim /etc/my.cnf
#配置内容如下:
[MysqLd]
datadir=/var/lib/MysqL
socket=/var/lib/MysqL/MysqL.sock
server-id=9 #取IP地址最后一段
gtid_mode=on #开启gtid模式
enforce_gtid_consistency=on
log-bin=MysqL-bin
# disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MysqL setup
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
# character set
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
character-set-client-handshake=FALSE
# Default user
user=MysqL
auto_increment_increment=2 #自动增长的步长
auto_increment_offset=1 #自动增长的起始数值
# slow query
slow_query_log=on
slow_query_log_file=/var/lib/MysqL/slow-query.log
# Adjust as your needed
max_connections=1000
back_log=256
connect_timeout=10
key_buffer_size=16777216
innodb_buffer_pool_size=536870912
tmp_table_size=536870912
thread_cache_size=100
long_query_time=2
max_allowed_packet=200M
log-slave-updates=1
#log-slave-updates用来控制本机是否把所有的操作写入到binary log,默认的情况下MysqL是关闭的;会导致自己作为从机时,自己的从机复制不到数据,需要设置为开启。
[MysqLd_safe]
log-error=/var/log/MysqLd.log
pid-file=/var/run/MysqLd/MysqLd.pid
[MysqLd]
datadir=/var/lib/MysqL
socket=/var/lib/MysqL/MysqL.sock
server-id=182
gtid_mode=on
enforce_gtid_consistency=on
log-bin=MysqL-bin
# disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
# character set
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
character-set-client-handshake=FALSE
# Default user
user=MysqL
auto_increment_increment=2 #自动增长的步长
auto_increment_offset=2 #自动增长的起始数值
# slow query
slow_query_log=on
slow_query_log_file=/var/lib/MysqL/slow-query.log
max_connections=1000
back_log=256
connect_timeout=10
key_buffer_size=16777216
innodb_buffer_pool_size=536870912
tmp_table_size=536870912
thread_cache_size=100
long_query_time=2
max_allowed_packet=200M
log-slave-updates=1
[MysqLd_safe]
log-error=/var/log/MysqLd.log
pid-file=/var/run/MysqLd/MysqLd.pid
MysqL> show master status;
MysqL>change master to master_host='192.168.119.182', master_user='repl', master_password='密码', master_port=3306, master_auto_position=1;
#启动slave
MysqL>start slave;
MysqL>show slave status\G
# 如果看到两个yes ,如下所示,则表示成功
Slave_IO_Running: Yes
Slave_sql_Running: Yes

MysqL> show master status;
MysqL>change master to master_host='192.168.119.9', master_user='repl', master_password='密码', master_port=3306, master_auto_position=1;
#启动slave
MysqL>start slave;
MysqL>show slave status\G
# 如果看到两个yes ,如下所示,则表示成功
Slave_IO_Running: Yes
Slave_sql_Running: Yes

MysqL> show master status;
MysqL>change master to master_host='192.168.119.9', master_user='repl', master_password='密码', master_port=3306, master_auto_position=1;
#启动slave
MysqL>start slave;
MysqL>show slave status\G
# 如果看到两个yes ,如下所示,则表示成功
Slave_IO_Running: Yes
Slave_sql_Running: Yes

MysqL> show master status;
MysqL>change master to master_host='192.168.119.182', master_user='repl', master_password='密码', master_port=3306, master_auto_position=1;
#启动slave
MysqL>start slave;
MysqL>show slave status\G
# 如果看到两个yes ,如下所示,则表示成功
Slave_IO_Running: Yes
Slave_sql_Running: Yes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。