MySQL8安装,配置主从复制
记录一次在下使用安装(本次配置使用8.0.21),并配置主从复制的过程
记录一次在CentOS8下使用dnf安装MySQL8(本次配置使用8.0.21),并配置主从复制的过程
$ sudo dnf install @mysql设置开机自启并立即启动
$ sudo systemctl enable --now mysqld$ sudo systemctl status mysqld执行配置命令
$ sudo mysql_secure_installation按照以下步骤设置:
- Press y|Y for Yes, any other key for No: y [说明:确认并继续设置]
- Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 [说明:密码强度]
- New password: [ENTER STRONG PASSWORD HERE] [说明:输入密码]
- Re-enter new password: RE ENTER PASSWORD HERE [说明:确认密码]
- Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y [说明:确认使用设置的密码]
- Remove anonymous users? (Press y|Y for Yes, any other key for No) : y [说明:移除匿名用户]
- Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y [说明:禁止root用户远程访问]
- Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y [说明:移除测试的数据库]
- Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y [说明:重新加载权限相关的表]
- 服务IP
主服务器: 192.168.0.15 从服务器: 192.168.0.16
- 主服务器配置
修改主服务器的配置文件 mysql-server.cnf
$ vim /etc/my.cnf.d/mysql-server.cnf添加以下配置, server-id一般设置每个服务不一样即可,可以使用IP最后一段
server-id = 15 log-bin = /var/log/mysql/mysql-bin
log-bin目录需要允许mysql用户访问
$ chown -R mysql:mysql /var/log/mysql重启mysql
$ systemctl restart mysqld进入mysql控制台后, 添加用于同步数据的数据库用户, 例如用户名是 zqyu_rpl
$ mysql -u root -p> create user [email protected] identified by 'zqyu123456';> grant replication slave on *.* to [email protected];> flush privileges;主服务器开放数据库端口给从服务器(或者直接开放3306端口)
$ firewall-cmd --permanent --add-rich-rule=' rule family="ipv4" source address="192.168.0.16/32" port protocol="tcp" port="3306" accept'# 或$ firewall-cmd --add-port=3306/tcp --permanent# 最后$ firewall-cmd --reload查看并记录主服务器状态
> show master status\G;显示如下,需要用户的属性是 File 和 Position ,作为下面从服务器配置的起始点
*************************** 1. row ***************************File: mysql-bin.000001Position: 853Binlog_Do_DB:Binlog_Ignore_DB:Executed_Gtid_Set:1 row in set (0.00 sec- 从服务器配置
修改从服务器的配置文件 mysql-server.cnf
$ vim /etc/my.cnf.d/mysql-server.cnf添加以下配置
server-id = 16 log-bin = /var/log/mysql/mysql-bin read_only = 1
log-bin目录需要允许mysql用户访问
$ chown -R mysql:mysql /var/log/mysql重启mysql
$ systemctl restart mysqld进入mysql控制台后, 配置主服务器的信息,其中 MASTER_LOG_FILE和MASTER_LOG_POS就是上面主服务器记录的属性值, 配置完成后执行 start slave开启同步
$ mysql -u root -p> CHANGE MASTER TO MASTER_HOST='192.168.0.15', MASTER_USER='zqyu_rpl', MASTER_PASSWORD='zqyu123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=853;> start slave;查看同步状态
> show slave status\G确认属性如下即可
Slave_IO_Running: Yes # 或者 Connecting Slave_SQL_Running: Yes
如果需要修改保存位置,socket 和 socketx 默认保存位置都是 /var/lib/mysql, 修改的话最好两个都改,例如:
[mysqld]datadir=/home/zqyu/mysql-datasocket=/home/zqyu/mysql-data/mysql.sockmysqlx_socket=/home/zqyu/mysql-data/mysqlx.socklog-error=/home/zqyu/mysql-log/mysqld.logpid-file=/run/mysqld/mysqld.pidserver-id = 5log-bin = /home/zqyu/mysql-log/mysql-bin- Docker中安装MySQL - 使用 Docker 安装 MySQL 的完整步骤
- 利用Docker恢复MySQL - 使用 Docker 恢复旧服务器 MySQL 数据
- MySQL定时备份 - MySQL 数据库定时备份脚本
- 记录一次MYSQL主从同步重置 - 从库故障后重新同步的操作记录