mysql 集群部署

Last updated on November 20, 2024 am

🧙 Questions

集群安装集群mysql,多副本模式

☄️ Ideas

前提

安装mysql

先在每台服务器上安装mysql容器

配置高可用

通过备份副本的方式,让多个mysql库中的数据保持一致
默认容器映射 /data/mysql/conf.d

sudo vim /data/mysql/conf.d/my.cnf

注意:server-id每台服务器都必须不同

[mysqld]                                                                                                                                               
server-id       = 1
# 设置mysql时区
default-time-zone='+8:00'
# 一定要开启binlog
log-bin=mysql-bin
binlog_format=ROW
# 一定要开中继日志
relay-log=relay-log
# 设置不进⾏同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置并⾏复制线程数,推荐和cpu核数保持⼀致
# 影响同步速度
slave_parallel_workers=16
# 设置组提交的并⾏复制⽅式
slave_parallel_type=logical_clock
# 开启gtid模式
gtid_mode=on
# 设置GTID的⼀致性
enforce_gtid_consistency=ON
# 开启中继⽇志恢复
# 设置中继⽇志信息记录的⽅式
relay-log-recovery=1 
relay-log-info-repository=TABLE
# 设置同步master.info事务间隔
# 设置master.info记录⽅式
sync_master_info=1 
master_info_repository=TABLE
创建所有表的操作用户

如果是主机安装,推荐限制内网ip访问
注意:如果是容器安装,需要配置内网ip访问
每个mysql都要操作

sudo docker exec -it de-mysql bash
mysql -h localhost -u root -pde123 -P 30102
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl@1234';
-- 授权用户,可以操作所有表
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 刷新权限
flush privileges;

重启mysql

docker restart de-mysql
sudo docker exec -it de-mysql bash
mysql -h localhost -u root -pde123 -P 30102

推荐使用root用户操作
配置需要备份的mysql服务,即另一台mysql的ip信息

CHANGE MASTER TO MASTER_HOST='47.92.198.195',MASTER_PORT=30102,MASTER_USER='repl',MASTER_PASSWORD='repl@1234',master_auto_position=1;
start slave;
-- 当两台mysql的Slave_IO_Running和Slave_SQL_Running值都是yes时说明配置双主复制成功;
-- 双主复制最好在新建完数据库后就开始配置,验证结果只需在一个数据库新建表,另一个数据库就会自动新建
-- 错误在  Last_IO_Error 中看
show slave status\G;

mysql 集群部署
https://ispong.isxcode.com/db/mysql/mysql 集群部署/
Author
ispong
Posted on
September 20, 2023
Licensed under