一.一主多从
1.设置主服务器
vim /etc/my.cnf
[mysqld]
server-id = 1
log-bin=/var/log/mysql/mysql-bin
mkdir /var/log/mysql
chown -R mysql.mysql /var/log/mysql
重启服务
2.主服务器创建用户
CREATE USER '用户名'@'%' identified BY 'password';
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';
alter user '用户'@'%' identified with mysql_native_password BY '密码';
flush privileges;
show master status\G #查看主库日志名称,和节点
3.从服务
一从
[mysqld]
server-id = 2 # 每个从服务器的ID必须唯一
重启服务
二从
[mysqld]
server-id = 3 # 每个从服务器的ID必须唯一
重启服务
4.从服务中配置
CHANGE MASTER TO
MASTER_HOST = '主服务器ip',
MASTER_USER = '用户名',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001', # 主库日志名称
MASTER_LOG_POS = 12345; # 主库节点
START SLAVE; 启动
show slave status\G 查看IO线程和sql线程的状态
二、互为主从
1.改主服务器和从服务器配置文件
一主服务器
vim /etc/my.cnf
[mysqld]
server-id = 1
log-bin=/var/log/mysql/mysql-bin
mkdir /var/log/mysql
chown -R mysql.mysql /var/log/mysql
systemctl restart mysqld
二主服务器
vim /etc/my.cnf
[mysqld]
server-id = 2
log-bin=/var/log/mysql/mysql-bin
mkdir /var/log/mysql
chown -R mysql.mysql /var/log/mysql
systemctl restart mysqld
两个服务器中的server-id要不一致
2.两个数据库中都创建用户
创建用户并授权:
create user '用户名'@'%' identifid by 'password';
GRANT REPLICATION SLAVE ON 库名.表名 TO '用户名称'@'%';
取消密码认证
alter user 用户名@'%' identified with mysql_native_password BY '密码';
show master status\G #查看主库日志名称,和节点
3.change设置链接两个服务器都要设置
进入两个服务器数据库\e进行编辑
CHANGE MASTER TO
MASTER_HOST = '主服务器ip',
MASTER_USER = '用户名',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001', # 主库日志名称
MASTER_LOG_POS = 12345; # 主库节点
START SLAVE;
show slave status\G 查看IO线程和sql线程的状态
mysql 导入是报错:Parameters SOURCE_LOG_FILE, ... cannot be set when SOURCE_AUTO_POSITION is active.
解决办法
修改root密码认证插件
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
配置文件修改默认认证插件为mysql_native_password,具体修改方法如下:
vim /etc/my.cnf
加入
default_authentication_plugin=mysql_native_password
问题2#uuid
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决办法
[root@server ~] mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bk
[root@server ~] /etc/init.d/mysqld restart
MySQL主从复制报错Authentication plugin ‘caching_sha2_password‘ reported error: Authentication requires sec
解决办法
进入主库
执行语句:use mysql
再执行:select plugin from`user` where user = '你的用户的名字';
不出意外查询的结果为:caching_sha2_password
执行语句进行修改:ALTER USER '你的名字'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';