环境预备
- 虚拟机配置:
- 三台虚拟机(比方:master、slave1、slave2),发起利用相同操纵系统(如 CentOS 7)。
- 确保三台呆板网络互通(通过内网 IP 或主机名解析)。
- 开放 MySQL 默认端口 3306,并关闭防火墙或配置防火墙规则:
- # 关闭防火墙(临时)
- systemctl stop firewalld
- # 禁止开机启动防火墙
- systemctl disable firewalld
复制代码
- 主机名解析:
在三台呆板的 /etc/hosts 文件中添加内容。
安装MySQL
在三台虚拟机上安装 MySQL 5.7(推荐利用 yum 安装以制止编译问题)。
- 添加 MySQL Yum 仓库:
- wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
- sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm
- # 启用 MySQL 5.7 仓库
- sudo yum-config-manager --disable mysql80-community
- sudo yum-config-manager --enable mysql57-community
复制代码 - 安装 MySQL:
- sudo yum install -y mysql-community-server
复制代码 - 启动 MySQL 并设置开机自启:
- sudo systemctl start mysqld
- sudo systemctl enable mysqld
复制代码 - 获取初始暗码:
- grep 'temporary password' /var/log/mysqld.log
复制代码 - 安全配置 MySQL:
- mysql_secure_installation
复制代码 主库配置
- 修改主库配置文件:
编辑 /etc/my.cnf,添加以下内容:
- [mysqld]
- server-id=1
- log-bin=mysql-bin
- binlog-format=ROW
- binlog-do-db=your_database_name # 需要同步的数据库(可选)
复制代码 - 重启 MySQL 服务:
- sudo systemctl restart mysqld
复制代码 - 创建复制用户:
登录 MySQL 主库:
- CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
- GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
- FLUSH PRIVILEGES;
复制代码 - 检察主库状态:
记录 File(如 mysql-bin.000001)和 Position(如 154),供从库利用。
从库配置
在 slave1 和 slave2 上执行以下操纵:
- 修改从库配置文件:
编辑 /etc/my.cnf,添加以下内容(留意 server-id 不同):
- [mysqld]
- server-id=2 # slave1 设为 2,slave2 设为 3
- relay-log=mysql-relay-bin
- read-only=1
复制代码 - 重启 MySQL 服务:
- sudo systemctl restart mysqld
复制代码 - 配置主从复制:
登录 MySQL 从库,执行:
- CHANGE MASTER TO
- MASTER_HOST='master',
- MASTER_USER='repl',
- MASTER_PASSWORD='repl_password',
- MASTER_LOG_FILE='mysql-bin.000001',
- MASTER_LOG_POS=154;
复制代码 - 启动复制:
- 检查复制状态:
确认以下两项为 Yes:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
数据同步
1.导出主库数据:
- mysqldump -u root -p --all-databases --master-data > master_dump.sql
复制代码
2.导入数据到从库:
- mysql -u root -p < master_dump.sql
复制代码 验证主从同步
在主库创建测试数据:
- CREATE DATABASE test_db;
- USE test_db;
- CREATE TABLE test_table (id INT);
- INSERT INTO test_table VALUES (1);
复制代码
在从库检查数据:
- SELECT * FROM test_db.test_table;
复制代码 常见问题排查
- 主从复制中断:
- 检查 SHOW SLAVE STATUS\G 中的 Last_IO_Error 和 Last_SQL_Error。
- 若数据不划一,重新执行 CHANGE MASTER TO 并重置复制:
- STOP SLAVE;
- RESET SLAVE;
- START SLAVE;
复制代码
- 网络问题:
- 利用 ping 或 telnet master 3306 检查网络连通性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |