8.4的Msyql在同步的时候与之前的版本有很大不同,这里记录一下安装流程
Mysql安装
官网下载
选择自己的版本,选第一个
复制下载链接
在服务器上创建一个msyql目录
使用命令下载,链接换自己的
wget https://dev.mysql.com/get/mysql84-community-release-el8-1.noarch.rpm
下载后解压
tar -xvf xxx.tar
解压后安装
rpm -ivh *.rpm --force --nodeps
启动mysql
systemctl start mysqld
查看状态
systemctl status mysqld
关闭mysql
systemctl stop mysqld
重启mysql
systemctl restart mysqld
设置开机自启动
systemctl enable mysqld
修改密码
获取初始密码
grep 'temporary password' /var/log/mysqld.log
用初始密码登录mysql
mysql -u root -p
修改密码安全等级为LOW
set global validate_password.policy=LOW;
修改密码最短长度
set global validate_password.length=6;
上面两步按需修改
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
添加新用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
设置远程登录
use mysql;
select host, user from user;
update user set host = '%' where user = 'root';
退出重启
exit
systemctl restart mysqld
主主复制
意思是不管那台发生了改变,都会同步到另一台
在第一台服务器上修改/etc/my.cnf文件
vim /etc/my.cnf
在后面加上这些,开启binlog
[mysqld]
log-bin=mysql-bin
server-id=1
auto-increment-increment=2
auto-increment-offset=1
重启mysql
systemctl restart mysqld
进入mysql,查看mysql是否开启
SHOW VARIABLES LIKE 'log_bin';
创建一个用户用来专门同步
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
获取二进制日志文件名和位置
SHOW MASTER STATUS;
如果使用的Mysql版本是8.4及以上,需要注意要使用下面的命令
SHOW BINARY LOG STATUS;
官方说明文档
修改第二台服务器的my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2
auto-increment-increment=2
auto-increment-offset=2
创建一个用户用来专门同步
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
获取二进制日志文件名和位置
SHOW BINARY LOG STATUS;
配置同步
- 第一台
8.4以前的写法
CHANGE MASTER TO
MASTER_HOST='第二台的IP',
MASTER_USER='第二台上用于同步的用户名',
MASTER_PASSWORD='用户密码',
MASTER_LOG_FILE='mysql-bin.000001', -- 用你在第二台服务器上获得的日志文件名
MASTER_LOG_POS=555; -- 用你在第二台服务器上获得的位置
START SLAVE; -- 开启备份
STOP SLAVE; -- 停止备份
SHOW SLAVE STATUS: -- 查看备份状态
8.4后的写法
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='第二台的IP',
SOURCE_USER='第二台上用于同步的用户名',
SOURCE_PASSWORD='用户密码',
SOURCE_LOG_FILE='mysql-bin.000001', -- 用你在第二台服务器上获得的日志文件名
SOURCE_LOG_POS=555; -- 用你在第二台服务器上获得的位置
START REPLICA; -- 开启备份
STOP REPLICA; -- 停止备份
SHOW REPLICA STATUS; -- 查看备份状态
第二台同上
略
检查是否同步成功
两台都用sql查询
SHOW REPLICA STATUS;
确保Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
。
在第一台添加数据库test1
刷新第二台
可以看到已经同步过来了
同样可以测试在第二台添加
第一台也能同步
删除其中一台里面的数据,另一台也会同步删除
这里不做记录,我试过了
可自行测试