# mysql双主双从集群 **Repository Path**: lingding0521/mysql_double ## Basic Information - **Project Name**: mysql双主双从集群 - **Description**: 避免单一主服务器宕机,集群写入能力缺失,从 1 复制 主1 ,从 2 复制 主 2,主 1 复制 主 2,主 2 复制主 1,也就是 主 1 和主 2 互为主从。主1主2互为主从,是为了以下情景,主1挂了,主2自动升级为主数据库,当主1恢复后,主1则变成次主数据库。 - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-09 - **Last Updated**: 2025-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 介绍 避免单一主服务器宕机,集群写入能力缺失,从 1 复制 主1 ,从 2 复制 主 2,主 1 复制 主 2,主 2 复制主 1,也就是 主 1 和主 2 互为主从。主1主2互为主从,是为了以下情景,主1挂了,主2自动升级为主数据库,当主1恢复后,主1则变成次主数据库。 #### 软件架构 软件架构说明 四台服务器,每台服务器上安装了 mysql8.0 数据库 #### 安装教程 1. 访问国内镜像站下载mysql组件,中国科学技术大学开源软件镜像:http://mirrors.ustc.edu.cn/ ``` wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-server-8.0.31-1.el9.x86_64.rpm wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-libs-8.0.31-1.el9.x86_64.rpm wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-icu-data-files-8.0.31-1.el9.x86_64.rpm wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-common-8.0.31-1.el9.x86_64.rpm wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-client-plugins-8.0.31-1.el9.x86_64.rpm wget http://mirrors.ustc.edu.cn/mysql-repo/yum/mysql-8.0-community/el/9/x86_64/mysql-community-client-8.0.31-1.el9.x86_64.rpm ``` 2. 下好rpm安装包之后安装 ``` yum install -y *.rpm ``` #### 使用说明 1. 启动 ``` systemctl start mysqld systemctl enable mysqld ``` 2. 查询并修改Mysql服务器默认密码 ``` grep 'password' /var/log/mysqld.log mysqladmin -uroot -p'5e#q>oQ,:Gg0' password 'Ling@123' ``` 3.主1my.cnf添加如下配置 vim /etc/my.cnf ``` log-bin=/var/lib/mysql/binlog server-id=1 binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-do-db=mydb2 binlog_format=statement expire_logs_days=7 slave_skip_errors=1062 log-slave-updates auto-increment-increment=2 auto-increment-offset=1 max_connect_errors=1000 ``` 4.主2my.cnf添加如下配置 vim /etc/my.cnf ``` log-bin=/var/lib/mysql/binlog server-id=3 binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-do-db=mydb2 binlog_format=statement expire_logs_days=7 slave_skip_errors=1062 log-slave-updates auto-increment-increment=2 auto-increment-offset=2 max_connect_errors=1000 ``` 5.从1 my.cnf 添加如下配置 vim /etc/my.cnf ``` server-id=2 relay-log=mysql-relay ``` 6.从2 my.cnf 添加如下配置 vim /etc/my.cnf ``` server-id=4 relay-log=mysql-relay ``` 7.配置完重启mysql ``` systemctl restart mysqld ``` 8.主1、主2创建主主同步账号、主从同步账号并授权 ``` create user 'rep_master'@'%' identified with mysql_native_password by 'Ling@123'; create user 'rep_slave'@'%' identified with mysql_native_password by 'Ling@123'; grant replication slave on *.* to 'rep_slave'@'%'; grant replication slave on *.* to 'rep_master'@'%'; flush privileges; ``` 9.配置主从同步 1)主1(M) --> 从1(S) 主1 mysql 查看2进制日志位置 ``` flush logs; show master status; change master to master_host='192.168.221.159',master_user='rep_slave',master_password='Ling@123',master_log_file='binlog.000002',master_log_pos=1265; #master_host填主1ip地址 start slave; ``` 2)主2(M) --> 从2(S) 主2 mysql 查看2进制日志位置 ``` flush logs; show master status; change master to master_host='192.168.221.154',master_user='rep_slave',master_password='Ling@123',master_log_file='binlog.000002',master_log_pos=1264; #master_host填主2ip地址 start slave; ``` 3)主1(M) --> 主2(S) 主1 mysql 查看2进制日志位置 ``` show master status; change master to master_host='192.168.221.159',master_user='rep_master',master_password='Ling@123',master_log_file='binlog.000002',master_log_pos=1265; #master_host填主1ip地址 start slave; ``` 4)主2(M) --> 主1(S) 主2 mysql 查看2进制日志位置 ``` show master status; change master to master_host='192.168.221.154',master_user='rep_master',master_password='Ling@123',master_log_file='binlog.000002',master_log_pos=1264; #master_host填主2ip地址 start slave; ``` 10.主1 mysql 下创建数据库 mydb2,创建表 books,插入一条数据,查看主1、主2、从1、从2是否同步生成数据库、表、数据。