当前位置:   article > 正文

Linux CentOS-7 离线安装MYSQL8.0数据库-->MYSQL主从节点配置-->MYSQL主从切换 详细教程

mysql主从切换

目录

一、准备

1、关闭防火墙和SELINUX安全模式

2、上传安装包到/usr/local/mysql

二、安装MYSQL数据库

1、解压包并开始安装

2、 依次安装

 3、启动并进入数据库配置

三、MYSQL主从节点配置

1、主机配置(master)

2.配置从库(slave) 

3、主从关联配置

三、 MySQL 主从切换


一、准备

我这是使用RPM包安装,可前往mysql官网下载或用我网盘的包,

百度网盘链接:https://pan.baidu.com/s/1vyHmyJNojTetuFZKnLNYPw?pwd=aqws 
提取码:aqws

官网下载安装包MySQL :: Download MySQL Community Server (Archived Versions)

ae0226f865c842c9845a53d1e68f2bea.png

1、关闭防火墙和SELINUX安全模式

  1. #关闭防火墙并设置开机不启动
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. #关闭SElinux安全模式
  5. setenforce 0
  6. #设置永久关闭selinux
  7. vi /etc/selinux/config
  8. #修改SELINUX:
  9. SELINUX=disabled
  10. #重启生效
  11. reboot

2、上传安装包到/usr/local/mysql

  1. #创建一个放包的路径
  2. mkdir -p /usr/local/mysql

二、安装MYSQL数据库

1、解压包并开始安装

  1. #进入包在的路径
  2. cd -p /usr/local/mysql
  3. #解压
  4. tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

1119c323a300464d93557b1d58649316.png

2、 依次安装

  1. rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
  2. rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
  3. #安装此包时会报错(看下图)
  4. #是原来自带的,卸了即可
  5. rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
  6. #卸载
  7. yum remove mysql-libs
  8. #再次安装
  9. rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
  10. #把一些依赖安装一下
  11. sudo yum install -y libaio
  12. yum install -y net-tools.x86_64
  13. #继续安装包
  14. rpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm
  15. rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
  16. #最后一一个包 要语句后面加上 --nodeps --force,安装时忽
  17. 略依赖关系
  18. rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --nodeps --force

634c9f71b05e4297bbf5f6dd51db7894.png

 3、启动并进入数据库配置

  1. #启动
  2. systemctl start mysqld
  3. #查看初始密码(要先启动才有)
  4. cat /var/log/mysqld.log |grep password
  5. #登陆并修改密码(密码自取,有大小写字令母符号数字)
  6. mysql -u root -p
  7. alter user 'root'@'localhost' identified by 'password';
  8. #配置远程连接
  9. use mysql;
  10. update user set host='%' where user='root';
  11. #刷新才生效
  12. flush privileges;
  13. #最好再重启一下数据库
  14. systemctl restart mysqld

ac61e38c261246178fde544f9e3467a3.png

三、MYSQL主从节点配置

MYSQL 数据库准备好两个单机的,如果从库是克隆主库出来的,所以两个库的 IP 地址以及 auto.cnf
里的 UUID 都要改得不一样
不是克隆的不用理
修改一个库的 UUID 就行,只要两库的 UUID 不一样就行
  1. #执行命令查看 auto.cnf 文件的位置
  2. find -name auto.cnf #执行命令后没有的话,看最后一行
  3. vi 到上面命令查询到的地址,修改 uuid 的值,随便改,只要不一样就可以了
  4. #server-uuid=sgsgsg455sfsfgsg4
  5. #修改后,进库查看主从两库的 UUID 是不是不一样
  6. mysql -u root -p
  7. show variables like '%server_uuid%';
  8. #如改后还是一样,在/var/lib/mysql 可能也有一个 auto.cnf,修改一下即可
  9. vi /var/lib/mysql/auto.cnf
  10. #修改后,进库查看主从两库的 UUID 是不是不一样
  11. mysql -u root -p
  12. show variables like '%server_uuid%';

1、主机配置(master)

  1. 进入 /etc/my.cnf 添加或修改配置
  2. vi /etc/my.cnf
  3. #添加配置如下
  4. #在[mysqld]下添加
  5. server-id = 1 #节点 ID,确保唯一。建议放在[mysqld]下的首行,不然可能会有报错
  6. log-bin = mysql-bin #binlog 日志位置
  7. #以下参数选填(可不填)
  8. binlog_format = mixed #binlog 日志格式,mysql 默认采用 statement,建议使用 mixed
  9. expire_logs_days = 7 #binlog 过期清理时间
  10. max_binlog_size = 100m #binlog 每个日志文件大小
  11. binlog_cache_size = 5m #binlog 缓存大小
  12. max_binlog_cache_size= 256m #最大 binlog 缓存大
  13. binlog-ignore-db=mysql #不生成日志文件的数据库,可用逗号拼接
  14. binlog-do-db= 数据库名 #需要同步的数据库
  15. binlog-ignore-db = 数据库名 #不需要同步的数据库

e41a7322532a4280a5517b98ab812ed0.png

重 MYSQL 启服务

service mysqld restart

进入数据库,查看主库(master)信息, File 和 Position 信息要记下,后面要用,可复制出来先放 txt 文档中先

  1. mysql -u root -p
  2. show master status;

4ae404b4e3c843aa93e76f93e3cd97e8.png

2.配置从库(slave) 

  1. vi /etc/my.cnf
  2. #在[mysqld]下添加
  3. server-id=2 #节点 ID,确保唯一。建议放在[mysqld]下的首行,不然可能会有报错
  4. log-bin= mysql-bin #binlog 日志位置
  5. relay-log= slave-relay-bin #必须开启,从主数据库同步的 binlog 会写入到该目录下
重 MYSQL 启服务
service mysqld restart

3、主从关联配置

  1. #从库进入数据库
  2. mysql -u root -p
  3. #停掉从库的服务,一定要停掉服务再去执行下面的命令
  4. stop slave;
  5. #配置关联主库(master),
  6. #MASTER_HOST : 要连接的主服务器的 ip 地址
  7. #MASTER_USER : 要连接的主服务器的用户名
  8. #MASTER_PASSWORD : 设置要连接的主服务器的密码
  9. #以下两个填主库执行 show master status; 得到的信息
  10. #MASTER_LOG_FILE :要连接的主服务器的 bin 日志的日志名称
  11. #MASTER_LOG_POS :要连接的主服务器的 bin 日志的记录位置
  12. change master to master_host='主节点IP', master_port=3306,master_user='root',master_password='数据库密码',master_log_file='mysql-bin.000001',master_log_pos=157;
  13. #启动
  14. start slave
  15. #查看主从同步状态,没有报错启动成功
  16. show slave status \G;
下面两个选项要都是 Yes

64611b4e0fe043cea6990209999eeb12.png

 测试:连接主数据库,建库建表看是否同步到从库

a52aca88d0d84abda3fa8b3d552ed2f4.png

三、 MySQL 主从切换

1、手动切换
  1. #切断对主库的数据传输,进入主库备库设置只读
  2. mysql -u root -p
  3. set global read_only=ON;
  4. set global super_read_only=ON;

20f3a96445f9430d80ebf54a8591ce59.png

  1. #从库查看主从同步状态
  2. show slave status \G

图中两处也还为Yes

7b1cac228aa54cd6880168643f3249a1.png

  1. #比对主备两边的 GTID 是否一致(要是一样的)
  2. select @@global.gtid_executed;

我这都是为空的,测试后未发现对主从库切换,数据同步有影响

7341a623af8640f8b07900afd104c2b6.png

  1. #从库停掉复制进程,并清空主从信息
  2. stop slave;
  3. reset slave all;
  4. #从库关闭只读开启读写,转为新主库
  5. set global read_only=off;
  6. set global super_read_only=off;
  7. #查看新主库信息, File 和 Position 信息要记下,后面要用,可复制出来先放 txt 文档中先
  8. show master status;

65fbd92ac1504745ba77d92fba2e79e1.png

  1. #停掉原主库的服务
  2. stop slave;
  3. #配置关联主库(master),
  4. #MASTER_HOST : 要连接的主服务器的 ip 地址
  5. #MASTER_USER : 要连接的主服务器的用户名
  6. #MASTER_PASSWORD : 设置要连接的主服务器的密码
  7. #以下两个填主库执行 show master status; 得到的信息
  8. #MASTER_LOG_FILE :要连接的主服务器的 bin 日志的日志名称
  9. #MASTER_LOG_POS :要连接的主服务器的 bin 日志的记录位置
  10. change master to master_host='主节点IP', master_port=3306,master_user='root',master_password='数据库密码',master_log_file='mysql-bin.000001',master_log_pos=1736;
  11. #启动
  12. start slave;
  13. #查看主从同步状态,没有报错启动成功
  14. show slave status \G;

图中两处要为Yes

a304732ece684ca48b41f1931a6348a3.png

  1. #旧主库关闭只读,开启读写,转为从库
  2. set global read_only=off;
  3. set global super_read_only=off;

测试:连接新主数据库,建表看是否同步到从库

2ba7a72af8a5459bad212c1077b9fd51.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/115157
推荐阅读
相关标签
  

闽ICP备14008679号