mysql主从复制
centos7.9
master 192.168.183.174
node 192.168.183.175
关闭防火墙和selinux(两台都执行)
systemctl disable firewalld
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
然后重启reboot(两台都执行)
安装mysql的脚本(两台都执行)
#!/bin/bash
echo "开始安装MySQL..."
echo "卸载冲突软件包..."
rpm -e postfix-2:2.10.1-9.el7.x86_64
rpm -e mariadb-libs-5.5.68-1.el7.x86_64
echo "检查是否还有mariadb残留..."
rpm -qa|grep mariadb
echo "下载MySQL仓库配置..."
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
echo "安装MySQL仓库..."
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
echo "更新yum缓存..."
yum clean all
yum makecache
echo "导入MySQL GPG密钥..."
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
echo "安装MySQL服务器和客户端..."
yum install -y mysql-community-server mysql-community-client
echo "显示MySQL版本..."
mysql -V
echo "MySQL安装完成"
bash 脚本名
主库配置
(master)
在/etc/my.cnf添加
server-id=1 主从服务器必须有不同的 server-id,取值范围:1 到 2³²-1,必须为正整数,不能为 0
read-only=0 1代表只读,0代表读写
log_bin=mysql-bin
binlog_format=ROW
启动mysql
systemctl start mysqld
systemctl enable mysqld
grep "password" /var/log/mysqld.log 获取初始密码
mysql -uroot -p'初始密码'
修改登录密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
创建用户
create user '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
WITH mysql_native_password MySQL 8.0 默认使用 caching_sha2_password 认证插件,需要安全连接(SSL)。使用 mysql_native_password 插件可以避免这个要求
赋权限
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';
FLUSH PRIVILEGES;
查看主库状态
SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 1014 | | | |
+---------------+----------+--------------+------------------+-----------------
从库配置
(node)
在/etc/my.cnf添加
server-id=2 主从服务器必须有不同的 server-id,取值范围:1 到 2³²-1,必须为正整数,不能为 0
read-only=1 1代表只读,0代表读写
relay_log=mysql-relay-bin
log_bin=mysql-bin
启动mysql
systemctl start mysqld
systemctl enable mysqld
grep "password" /var/log/mysqld.log 获取初始密码
mysql -uroot -p'初始密码'
修改登录密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
设置主库配置
CHANGE MASTER TO
MASTER_HOST='主库ip',
MASTER_USER='主库创建的用户',
MASTER_PASSWORD='主库创建的用户密码',
MASTER_LOG_FILE='binlog.000004', 刚才SHOW MASTER STATUS;的内容
MASTER_LOG_POS=1014;
启动复制
START SLAVE;
检查状态
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
配置成功
不管几个从机,配置都是一样的
常见问题
出现错误,先看日志
1.网络不通 #互ping机器ip,无丢包率正常访问
2.pos不正确 #主服务器,登陆数据库重新查看起始偏移量show master status
3.防火墙和selinux #是否放行mysql的服务,建议练习直接关死
4.ID问题 在安装完mysql数据库的时候默认他们的server-id=1 但是在做主从同步的时候需要将ID号码设置不一样才行