2021-06-12 mysql主备同步部署

1、主服务器和备服务器都安装好mysql,最好是同一版本。
主用服务器IP为192.168.226.128,备用服务器IP为192.168.226.129。并且分别都创建同一个数据库。
CREATE SCHEMA test
注意主和备都要事先创建好数据库
2、在主服务器上为备用服务器设置同步帐号
grant replication slave,file on . to ‘replicate’@‘192.168.226.129’ identified by ‘密码’;
这里面注意一定要用slave和file权限,之前我就是没设置file权限导致有错误发生
3、在主用服务器上设置二进制日志
在mysql配置文件/etc/my.cnf中修改
server_id=1
log_bin=mysql_bin
binlog-do-db=test
binlog-ignore-db=mysql

其中test是你要同步的数据库
log_slave_updates=1
binlog-do-db=db_name # 需要同步的数据库
binlog-ignore-db=mysql # 被忽略的数据库
修改好,重启服务

如果需要同步多个数据库的话可以在配置文件添加一行
例如
主库文件:
binlog-do-db=test
binlog-do-db=test1
备库文件:
replicate-do-db=test
replicate-do-db=test1

4、查看主服务器状态
show master status\G;
记住两个File和Position这两个参数或者show master status;
在这里插入图片描述

5、在从服务器上设置复制的二进制数据库
/etc/my.cnf中修改
server_id=2
log_bin=mysql_bin
replicate-do-db=test

注意要把server-id改了,默认是1的,要改成跟主用的不一样
修改好,重启服务

6、在备用服务器上指定同步位置
mysql>stop slave; //先停步slave服务线程
mysql>change master to master_host=‘192.168.226.128’,master_user=‘replicate’,master_password=‘密码’,master_log_file=‘mysql_bin.000002’,master_log_pos=2132;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position

mysql>start slave; //启动slave服务线程
mysql> show slave status\G; //查看同步情况

以下两项如果都是Yes就说明同步成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在这里插入图片描述

7、数据测试
在主库建表
CREATE TABLE IF NOT EXISTS runoob_tbl(
runoob_id INT UNSIGNED AUTO_INCREMENT,
runoob_title VARCHAR(100) NOT NULL,
runoob_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( runoob_id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

create table student (id int,name varchar(255),age int,sex varchar(255),birth date);

插入数据
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES (“学习 PHP”, “菜鸟教程”, NOW());

insert into student values(1,“goutou”,18,“man”,“1994-01-01”);

在备份库查询
在这里插入图片描述

8、遇到的问题
问题1、新装的数据库修改root密码失败,原因是系统密码安全策略限制
参考https://blog.csdn.net/Hello_World_QWP/article/details/79551789 非常感谢博主
密码策略问题异常信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决办法:

1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看,
如下图:
在这里插入图片描述
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,
如下图:
在这里插入图片描述

3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,
如下图:
在这里插入图片描述

4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’; ” 可以看到修改成功,表示密码策略修改成功了!!!

如下图:
在这里插入图片描述

注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,如下图:

在这里插入图片描述

关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

再次感谢 原文链接:https://blog.csdn.net/Hello_World_QWP/article/details/79551789

重启mysql后失效,密码策略永久生效方法:写入mysql配置文件/etc/my.cnf
validate_password_policy=0
validate_password_length=5
重启服务即可.

systemctl restart mysqld

问题二、备份数据库检查备份状态显示Slave_IO_Running: NO
查看日志文件/var/log/mysqld.log
显示[ERROR] Slave I/O for channel ‘’: 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. Error_code: 1593
原因:由于我的两个数据库虚拟机是克隆的导致配置文件
解决办法:
修改备库/var/lib/mysql/auto.cnf
将server-uuid的值改为与主库不同
保存后重启mysql再次查看链路
show slave status\G;

感谢参考文档,原文链接:https://blog.csdn.net/weixin_40816738/article/details/100054450

问题三:Slave_IO_Running:connecting
检查关闭两个数据库的防火墙iptables firewalld即可
systemctl stop firewalld
systemctl disable firewalld

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值