美文网首页
MySQL 基于事务的 Replication(利用 GTID

MySQL 基于事务的 Replication(利用 GTID

作者: 平头哥2 | 来源:发表于2020-09-11 10:14 被阅读0次

MySQL 安装

1. Adding the MySQL Yum Repository

  1. Go to the Download MySQL Yum Repository page (https://dev.mysql.com/downloads/repo/yum/) in the MySQL Developer Zone.

  2. Select and download the release package for your platform.

  3. Install the downloaded release package

    sudo yum install mysql80-community-release-el7-{version-number}.noarch.rpm
    
  4. check

    yum repolist all | grep mysql
    

2. installation

sudo yum-config-manager --disable mysql57-community
sudo yum-config-manager --enable mysql80-community
sudo yum install mysql-community-server

3. Starting MySQL Server

sudo systemctl start mysqld.service

sudo systemctl status mysqld.service

4. reset password

shell> sudo grep 'temporary password' /var/log/mysqld.log
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

MySQL 基于事务的 Replication(利用 GTID 实现主从复制)

GTID(全局事务标示符)最初由google实现,在MySQL 5.6中引入.GTID在事务提交时生成,由UUID和事务ID组成.uuid会在第一次启动MySQL时生成,保存在数据目录下的auto .CNF文件里,事务ID则从1开始自增使用GTID的好处主要有两点:

不再需要指定传统复制中的 master_log_files 和 master_log_pos,使主从复制更简单可靠
可以实现基于库的多线程复制,减小主从复制的延迟

1. 主库配置

[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1   # 强制执行GTID一致性。

2. 创建日志目录并赋予权限

shell> mkdir /var/log/mysql
shell> chown mysql.mysql /var/log/mysql

3. 重启服务

shell> systemctl restart mysqld.service

4. 在主服务器创建一个仅具有复制过程权限的单独帐户,以最大程度地降低对其他帐户的危害

mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'Www.1.com';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

5. 在主服务器创建一个仅具有all权限的单独帐户,用于从服务器远程拷贝原有的数据

mysql> CREATE USER 'tom'@'%' IDENTIFIED BY 'Www.1.com';
mysql> GRANT ALL ON *.* TO 'tom'@'%';
mysql> flush privileges;

6. 在从服务器上使用刚才的用户进行测试连接

shell> mysql -urepl -p'Www.1.com' -hMASTER_IP
shell> mysql -utom -p'Www.1.com' -hMASTER_IP

7. 配置从服务器 /etc/my.cnf

[mysqld]
server-id=2
gtid_mode=ON
enforce_gtid_consistency=1

# 可选项, 把连接到 master 的信息存到数据库中的表中
master-info-repository=TABLE
relay-log-info-repository=TABLE

8. 重启从服务器

shell> systemctl restart mysqld.service

9. 进入从服务器mysql,执行如下操作

mysql>  CHANGE MASTER TO MASTER_HOST='192.168.235.128', MASTER_PORT=3306, MASTER_USER='repl',MASTER_PASSWORD='Www.1.com', master_auto_position=1;

10. 检查是否成功

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.235.128
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 196
               Relay_Log_File: localhost-relay-bin.000004
                Relay_Log_Pos: 411
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0

输出结果中应该看到 I/O 线程和 SQL 线程都是 YES, 就表示成功。

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

相关文章

网友评论

      本文标题:MySQL 基于事务的 Replication(利用 GTID

      本文链接:https://www.haomeiwen.com/subject/zqyvektx.html