• 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;                 查看

     

  • 相关阅读:
    微信JS SDK Demo
    微信JS SDK使用权限签名算法
    微信JS接口
    微信分享JS接口失效说明及解决方案
    微信支付开发(2) 扫码支付模式一
    不懂技术的人不要对懂技术的人说这很容易实现
    独立开发者经验分享
    微信公开课PRO版张小龙演讲全文
    RC4加密算法的原理及实现
    上传APP加入视频预览--精简点名
  • 原文地址:https://www.cnblogs.com/krystal-LA-zx/p/12842689.html
Copyright © 2020-2023  润新知