mysql5.7.33主从复制

1.mysql 5.7安装密码校验插件validate_password

1.1 查看validate_password插件

mysql> show variables like ‘%validate_password%‘;

1.2在my.cnf增加如下内容

[mysqld]
validate_password = on
validate_password_policy = 1
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT

1.3重新查看validate_password插件

mysql> show variables like ‘%validate_password%‘;
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

2.在两台数据库中分别创建数据库

 mysql>create database kht;

3.在主服务器master进行如下配置:

vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,
#statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。
#mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1 #要求各个服务器的id必须不一样
binlog-do-db=msb   #同步的数据库名称

3.2重启主服务器master并查看状态

systemctl restart mysql

#查看master的状态
mysql> show master status;
+---------------+----------+--------------+------------------+------------------                                                                                           -+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                                                                                            |
+---------------+----------+--------------+------------------+------------------                                                                                           -+
| logbin.000001 |      154 | test         |                  |                                                                                                              |
+---------------+----------+--------------+------------------+------------------

4.从服务器slave的配置

vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin	#二进制文件的名称
binlog-format=ROW	#二进制文件的格式
server-id=2	#服务器的id

4.2配置从服务器slave登录主服务器的账号授权

--授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to ‘root‘@‘%‘ identified by ‘123456‘;
--刷新权限
flush privileges;

5.重启从服务器slave并连接主服务器master

systemctl restart mysql

mysql> change master to master_host=‘192.168.2.129‘,master_user=‘root‘,master_password=‘123456‘,master_port=3306,master_log_file=‘logbin.000011‘,master_log_pos=589;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
#启动slave
mysql>start slave
#查看slave的状态
mysql>show slave status\G(注意没有分号)
#注意Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

6.若虚拟机是克隆的,则同一个克隆的mysql会产生UUID冲突,可以从日志中查看,
此时会造成Slave_IO_Running: NO

找此auto.cnf修改uuid即可:find -name auto.cnf
# 重启mysql
service mysql restart
#停止链路
mysql>stop slave;
#启动链路
mysql>start slave;
#查看链路
mysql>show slave status \G

mysql5.7.33主从复制

上一篇:MySQL-InnoDB索引存储结构为何选择B+树


下一篇:win7 使用临时配置文件登陆解决办法