MYSQL的GTID方式互为主备

MySQL安装

MYSLQ 配置文件的常规写法:

[mysqld]
validate_password_policy=0
validate_password_length=6                   //密码规则
 
server_id=28
log-bin=server28              //开启binlog日志
binlog_format=row                     //说明binlog日志的日志格式

         statement:记录每一条修改数据的SQL命令

         row:不记录SQL语句,仅仅保存哪条记录被修改

        mixed:混合使用


log_slave_updates                              //常常用于链式主----》从-----》从     

lower_case_table_names=1                  //不区分大小写
max_connections=1000                      //最大连接数

Step:1 卸载自带的mariadb数据库

yum remove -y mariadb*

 

Step:2 上传mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar/opt下并且解压

cd /opt

rz --->选择上传的包

tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

 

Step:3 安装RPM

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm

 yum -y install net-tools

Step:4 初始化数据库

mysqld –initialize           

chown -R mysql:mysql /var/lib/mysql                  //第一次启动数据库的时候自己可以初始化。所以可以不用写入

service mysqld start

 

Step:5 登录并修改默认密码

grep password /var/log/mysqld.log                                         # 查看默认密码

mysql -uroot -p'默认密码'                   # 用默认密码登录

set password = password("123456");                          # 修改新密码

grant all privileges on *.* to root@'%' identified by '123456' with grant option;                      # 开启远程访问

flush privileges;                   # 刷新授权

若密码修改不成功,则在配置文件/etc/my.cnf中加入

validate_password_policy=0

validate_password_length=6

service mysqld restart                //重启mysqld

Step:6 防火墙放开3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload           //重启防火墙规则

systemctl restart firewalld        //重启防火墙服务

 

MySQL基于GTID实现互为主从

 

1、修改A服务器上的mysql配置文件my.cnf

my.cnf文件里加入参数(注意不要重复定义参数)

server-id=28    //这里的ID号与从库上或者主库上的ID必须保证不一样

log-bin=mysql-bin

binlog_format=row        //主从复制模式

log-slave-updates=true                 //slave 更新是否记入日志

gtid-mode=on       // 启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true      //强制GTID 的一致性

master-info-repository=TABLE           //主服信息记录库=表 /文件

relay-log-info-repository=TABLE             //中继日志信息记录库

sync-master-info=1           //同步主库信息

slave-parallel-workers=4            //从服务器的SQL 线程数,要复制库数目相同

binlog-checksum=CRC32    // 校验码 ,可以自定义

master-verify-checksum=1          //主服校验

slave-sql-verify-checksum=1          //从服校验

binlog-rows-query-log_events=1               //二进制日志详细记录事件

report-port=3306                //提供复制报告端口,当前实例端口号

report-host=192.168.1.28            //提供复制报告主机,本机的ip地址

lower_case_table_names=1          //忽略大小写

max_connections=1000          //最大连接数

 

2、修改B服务器上的mysql配置文件my.cnf

my.cnf文件里加入参数(注意不要重复定义参数)

 

server-id=29   //这里的ID号与从库上或者主库上的ID必须保证不一样

log-bin=mysql-bin

binlog_format=row        //主从复制模式

log-slave-updates=true                 //slave 更新是否记入日志

gtid-mode=on       // 启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true      //强制GTID 的一致性

master-info-repository=TABLE           //主服信息记录库=表 /文件

relay-log-info-repository=TABLE             //中继日志信息记录库

sync-master-info=1           //同步主库信息

slave-parallel-workers=4            //从服务器的SQL 线程数,要复制库数目相同

binlog-checksum=CRC32    // 校验码 ,可以自定义

master-verify-checksum=1          //主服校验

slave-sql-verify-checksum=1          //从服校验

binlog-rows-query-log_events=1               //二进制日志详细记录事件

report-port=3306                //提供复制报告端口,当前实例端口号

report-host=192.168.1.29           //提供复制报告主机,本机的ip地址

lower_case_table_names=1          //忽略大小写

max_connections=1000          //最大连接数

 

 

replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=performance_schema.%

 

(可以在配置文件里加入,作用屏蔽要复制的库,也可以不用写入)

 

3、授权数据同步用户

A服务器mysql实例3306:

grant replication slave,replication client on *.* to slave@'192.168.1.215' identified by '123456';

 

B服务器mysql实例3306:

grant replication slave,replication client on *.* to slave@'192.168.1.214' identified by '123456';

================================================================================

A服务器mysql实例3306:

change master to master_host='192.168.1.215',master_port=3306,master_user='slave',master_password='123456',master_auto_position=1;

 

B服务器mysql实例3306:

change master to master_host='192.168.1.214',master_port=3306,master_user='slave',master_password='123456',master_auto_position=1;

==================================================================================

A、B服务器上开启主从复制:start slave

           stop slave;

4、查看状态

          A服务器:show slave statusGshow processlist;

  

 

IO线程:IO线程从主库的binlog日志里面复制SQL语句到本机的中继日志relay-log中

 SQL线程:SQL线程把中继日志中的SQL执行一遍

从从库变成独立库:

1>cd /var/lib/mysql

2>rm -rf master.info  relay-log.info ,  主机名-relay-bin-xxxx,主机名-relay-bin.index

主库的信息会自动保存在master.info中

3>重启mysqld服务

4>show slave statusG;                 查看

 

原文地址:https://www.cnblogs.com/krystal-LA-zx/p/12842689.html