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主从同步环境
- Mysql主从配置,实现读写分离
创建复制用户:
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”;