【mysql 集群】一、主从复制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014532717/article/details/82380971

mysql 集群

概念:https://blog.csdn.net/qq_33936481/article/details/73330318

  • 配置SSH登录无密码验证(使用key登录,工作中常用,最好不要禁掉密码登录,如果禁了,可能会有问题)
三台机器上都要互相配置:
192.168.2.131 [root ~]$ ssh-keygen -t rsa
192.168.2.131 [root ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
192.168.2.131 [root ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
192.168.2.131 [root ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

mysql5.7 安装

https://www.cnblogs.com/freely/p/8087885.html

MySQL5.7初始密码修改

https://www.cnblogs.com/yoyotl/p/6387207.html

  • mysql 授权访问
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;

  • my.cnf 中最后一行添加
skip-grant-tables
  • 重启mysql

输入:mysql -u root -p

密码为空,直接回车,接着输入以下命令:

    use mysql;

  update user set authentication_string=password("root") where user="root";

  flush privileges;
  • 然后将 my.ini 中的 skip-grant-tables 删除

mysql主从同步环境

https://www.cnblogs.com/gomysql/p/3675429.html

  • Mysql主从配置,实现读写分离

https://www.cnblogs.com/alvin_xp/p/4162249.html

创建复制用户:


master 中
    mysql> grant replication slave on *.* to 'user'@'192.168.2.%' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)

slave 中
mysql>change master to master_host='120.77.***.***',master_user='repl',master_password='***',master_port=3306,master_log_file='mysql-bin.000016',master_log_pos=1042,master_connect_retry=10;
Query OK, 0 rows affected (0.01 sec)

  • 基于GTID 的复制

change master to master_host=‘172.18.***.**’,master_user='’,master_password='’,master_port=3306, master_auto_position=936;

参考

mysql5.7 、centos 7.5


192.168.9.38    master 
192.168.9.81    slave 
192.168.9.98    slave 

master 配置中my.cnf 文件中的[mysqld]下添加

server-id=10
log-bin=mysql-bin
log-slave-updates=1
binlog-do-db=hokage  #需要同步的数据库,如果没有本行表示同步所有的数据库
binlog-ignore-db=mysql  #被忽略的数据


log-bin=/var/lib/mysql/mysql-bin

192.168.9.81 slave 配置中my.cnf 文件中的[mysqld]下添加

server-id=12
log-bin= mysql-bin
relay-log= mysql-relay-bin
read-only=1
log-slave-updates=1
replicate-do-db=hokage #需要同步的数据库,如果没有本行表示同步所有的数据库

log-bin=/var/lib/mysql/mysql-bin

192.168.9.98 slave 配置中my.cnf 文件中的[mysqld]下添加

server-id=13
log-bin= mysql-bin
relay-log= mysql-relay-bin
read-only=1
log-slave-updates=1
replicate-do-db=hokage #需要同步的数据库,如果没有本行表示同步所有的数据库

log-bin=/var/lib/mysql/mysql-bin

注意事项:

  • 修改my.cnf 中 server_id
  • 修改auto.cnf 中的uuid 保证每个db 中的不一样

mysql基于日志和gtid复制配置和切换

https://blog.csdn.net/aryoyo/article/details/80597947
https://blog.csdn.net/jslink_l/article/details/54574066

  • 传统复制模式切换为GTID, 主库从库都需执行以下命令:
set global gtid_mode='OFF_PERMISSIVE';
set global gtid_mode='ON_PERMISSIVE';
set global enforce_gtid_consistency=ON;
set global gtid_mode='ON';
my.cnf主从都要添加
gtid_mode=on
enforce_gtid_consistency=on
  • 查看 gtid 模式是否开启

show variables like ‘%gtid_mode%’;

MySQL半同步复制原理配置与介绍

https://blog.csdn.net/xlgen157387/article/details/69400410

https://www.2cto.com/database/201806/757856.html

  • 查看半同步复制模式是否启用

show variables like “rpl_semi_sync_%_enabled”;

猜你喜欢

转载自blog.csdn.net/u014532717/article/details/82380971