51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

基于wlnmp一键安装包做MySQL主从

本文基于RockyLinux8.9系统 ,使用传统异步方式 来做MySQL主从同步,本文中所使用的MySQL版本为8.0.35 ,配置过程中不影响主库的正常运行,请确保主从服务器时间一致性,防火墙相应的规则已配置。

MySQL主从为什么不用master、slave了,以及主从复制原理见:https://blog.whsir.com/post-7332.html

MySQL主(SOURCE):10.10.10.161
MySQL从(REPLICA):10.10.10.162

MySQL主(SOURCE)配置

1、添加wlnmp和epel源
dnf install epel-release -y curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash

|-----|--------------------------------------------------------------------------------| | 1 2 | dnf install epel-release -y curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash |

2、安装MySQL
dnf install wmysql8 -y

|---|------------------------| | 1 | dnf install wmysql8 -y |

3、创建数据库whsir以及测试表(作为演示用)

注意wlnmp一键安装包安装的MySQL密码为空
mysql -uroot -p mysql> CREATE DATABASE whsir; mysql> USE whsir; mysql> CREATE TABLE wh_tb(id int,name varchar(30));

|---------|------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | mysql -uroot -p mysql> CREATE DATABASE whsir; mysql> USE whsir; mysql> CREATE TABLE wh_tb(id int,name varchar(30)); |

4、创建用户并授权从库可以读取日志文件
mysql> CREATE USER 'zhu'@'10.10.10.162' IDENTIFIED BY '123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'zhu'@'10.10.10.162';

|-----|------------------------------------------------------------------------------------------------------------------------------------| | 1 2 | mysql> CREATE USER 'zhu'@'10.10.10.162' IDENTIFIED BY '123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'zhu'@'10.10.10.162'; |

5、刷新查看用户权限
mysql> FLUSH PRIVILEGES;

|---|---------------------------| | 1 | mysql> FLUSH PRIVILEGES; |

查看zhu账号是否生效
mysql> SELECT USER,HOST FROM mysql.user;

|---|-------------------------------------------| | 1 | mysql> SELECT USER,HOST FROM mysql.user; |

6、备份库
mysqldump -uroot -p --routines --single_transaction --source-data=2 --databases whsir > whsir.sql

|---|----------------------------------------------------------------------------------------------------| | 1 | mysqldump -uroot -p --routines --single_transaction --source-data=2 --databases whsir > whsir.sql |

--single-transaction:该选项确保在备份时使用事务,这样可以保证备份的一致性,而不会锁定整个数据库。

--source-data=2:这个选项用于在输出文件中包含二进制日志坐标信息,二进制日志坐标信息是主从复制中用于同步的关键信息,这里数字"2"表示包含二进制日志文件名和位置。

7、备份库拷贝至从库上

把备份好的库拷贝到从库,你可以scp传过去,也可下载到本地再传到从库上。

8、查看备份文件whsir.sql的binlog和pos值,记录下来,从库配置时用
head -25 whsir.sql

|---|--------------------| | 1 | head -25 whsir.sql |

MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1274;

9、连通性验证

为了确保主库的账户配置正确以及主从服务器的连通性,我们在从服务器上连接下主的库,确保可以正常连通,再进行下一步
mysql -uzhu -p123456 -h10.10.10.161

|---|-------------------------------------| | 1 | mysql -uzhu -p123456 -h10.10.10.161 |

至此主库配置完毕。

MySQL从(REPLICA)配置

1、修改my.cnf文件

wlnmp一键安装包安装的MySQL数据库,默认server-id = 100,从库的server-id值一定要大于主库的。

修改从库my.cnf中的server-id
server-id = 101

|---|-----------------| | 1 | server-id = 101 |

指定复制的库和表,此处%表示通配所有
replicate-wild-do-table=whsir.%

|---|---------------------------------| | 1 | replicate-wild-do-table=whsir.% |

增加只读参数
read_only = ON

|---|----------------| | 1 | read_only = ON |

2、重启从库的MySQL
/etc/init.d/mysql restart

|---|---------------------------| | 1 | /etc/init.d/mysql restart |

3、创建whsir库
mysql -uroot -p mysql> CREATE DATABASE whsir;

|-----|------------------------------------------------| | 1 2 | mysql -uroot -p mysql> CREATE DATABASE whsir; |

4、导入whsir.sql
mysql -uroot -p whsir < whsir.sql

|---|------------------------------------| | 1 | mysql -uroot -p whsir < whsir.sql |

5、配置主从同步
mysql -uroot -p mysql> STOP REPLICA; mysql> CHANGE MASTER TO -> MASTER_HOST='10.10.10.161', -> MASTER_USER='zhu', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=1274, -> MASTER_CONNECT_RETRY=10; mysql> START REPLICA;

|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 | mysql -uroot -p mysql> STOP REPLICA; mysql> CHANGE MASTER TO -> MASTER_HOST='10.10.10.161', -> MASTER_USER='zhu', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=1274, -> MASTER_CONNECT_RETRY=10; mysql> START REPLICA; |

这里的MASTER_LOG_FILE和MASTER_LOG_POS值,就是前面提到的binlog和pos,MASTER_CONNECT_RETRY是连接失败后等待的秒数。

6、查看同步状态
mysql> SHOW REPLICA STATUS\G

|---|--------------------------------| | 1 | mysql> SHOW REPLICA STATUS\G |

如果看到以下两项都是yes表示主从配置成功

Replica_IO_Running: Yes
Replica_SQL_Running: Yes

如果看到以下等于0表示主从没有延迟

Seconds_Behind_Source: 0

7、最后在从库上创建一个只读权限的帐号
CREATE USER 'wh'@'10.10.10.%' IDENTIFIED BY '123456789'; GRANT SELECT ON whsir.* TO 'wh'@'10.10.10.%'; FLUSH PRIVILEGES;

|-------|---------------------------------------------------------------------------------------------------------------------------| | 1 2 3 | CREATE USER 'wh'@'10.10.10.%' IDENTIFIED BY '123456789'; GRANT SELECT ON whsir.* TO 'wh'@'10.10.10.%'; FLUSH PRIVILEGES; |

赞(0)
未经允许不得转载:工具盒子 » 基于wlnmp一键安装包做MySQL主从