zoukankan      html  css  js  c++  java
  • mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)

    环境说明:
    版本 version 5.6.25-log
    主库ip: 10.219.24.25
    从库ip:10.219.24.22
    os 版本: centos 6.7
    已安装热备软件:xtrabackup
    防火墙已关

    补充:

    主从复制原理: http://blog.csdn.net/zhang123456456/article/details/72972701
    GTID 复制原理: http://blog.csdn.net/zhang123456456/article/details/73002216
    mysql 5.6安装 : http://blog.csdn.net/zhang123456456/article/details/53608554
    xtrabackup 安装: http://blog.csdn.net/zhang123456456/article/details/72836184

    一主一从搭建流程:

    1、 主库参数调整
    -- 停止主库mysql
    [root@mysql02 ~]# service mysql stop
    [root@mysql02 ~]# netstat -nltp|grep mysql|grep 3606
    -- 调整 my.cnf 参数
    [root@mysql02 ~]# cat /etc/my.cnf
    [client]
    password = oracle
    port = 3306
    socket = /data/mysql/mysql.sock
    [mysqld]

    port = 3306
    socket = /data/mysql/mysql.sock
    character_set_server = utf8
    character_set_client = utf8
    collation-server=utf8_general_ci
    lower_case_table_names = 1
    max_connections = 1000
    datadir = /data/mysql

    #GTID:
    server-id=25
    gtid_mode=on #开启gtid模式
    enforce_gtid_consistency=on #强制gtid一致性,开启后对于特定create table不被支持

    #binlog
    log_bin = /data/mysql/binarylog/binlog
    log_bin_index = /data/mysql/binarylog/binlog
    binlog_format = mixed
    log-slave-updates=1

    #relay log
    skip_slave_start=1
    [mysql]
    default-character-set = utf8
    说明:主库必须配置的参数
    server-id (主从的server-id必须不同)、log_bin、log-slave-updates、gtid_mode、enforce_gtid_consistency

    -- 启动主库
    [root@mysql02 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

    2、 从库参数调整
    -- 停止从库mysql
    [root@mysql01 ~]# service mysql stop
    [root@mysql01 ~]# netstat -nltp|grep mysql|grep 3606
    -- 调整 my.cnf 参数
    [root@mysql01 ~]# cat /etc/my.cnf
    [client]
    password = oracle
    port = 3306
    socket = /data/mysql/mysql.sock
    [mysqld]
    port = 3306
    socket = /data/mysql/mysql.sock
    character_set_server = utf8
    character_set_client = utf8
    collation-server=utf8_general_ci
    lower_case_table_names = 1
    max_connections = 1000
    datadir = /data/mysql
    read-only = 1

    #GTID:
    server-id=22
    gtid_mode=on
    enforce_gtid_consistency=on

    #binlog
    log_bin = /data/mysql/binarylog/binlog
    log_bin_index = /data/mysql/binarylog/binlog
    log-slave-updates=1

    #relay log
    relay-log = /data/mysql/relaylog/relay
    relay-log-index = /data/mysql/relaylog/relay
    relay_log_purge = on
    skip_slave_start=1
    [mysql]
    default-character-set = utf8
    说明:从库必须配置的参数
    server-id、log_bin、relay-log、read-only、log-slave-updates

    3、 主库备份
    -- 主库备份目录
    [root@mysql02 full]# pwd
    /xtrabackup/full
    -- 主库 innobackupex 备份
    [root@mysql02 ~]# innobackupex --user=root --password=oracle --port=3606 /xtrabackup/full/
    170610 17:50:23 Backup created in directory '/xtrabackup/full/2017-06-10_17-50-19/'
    MySQL binlog position: filename 'binlog.000010', position '120'
    ....
    170610 17:50:23 completed OK!

    4、 从库创建与主库相同的备份目录
    [root@mysql01 ~]# mkdir -p /xtrabackup/full
    [root@mysql01 ~]# chown -R mysql:mysql /xtrabackup/full/

    5、 主库将备份 scp 到从库
    [root@mysql02 full]# pwd
    /xtrabackup/full
    [root@mysql02 full]# scp -r 2017-06-10_17-50-19 10.219.24.22:/xtrabackup/full
    6、 从库查看scp过来的备份
    [root@mysql01 ~]# cd /xtrabackup/full/2017-06-10_17-50-19/
    [root@mysql01 2017-06-10_17-50-19]# ll
    total 12320
    -rw-r-----. 1 root root 419 Jun 10 18:01 backup-my.cnf
    -rw-r-----. 1 root root 12582912 Jun 10 18:01 ibdata1
    drwxr-x---. 2 root root 4096 Jun 10 18:01 mysql
    drwxr-x---. 2 root root 4096 Jun 10 18:01 performance_schema
    drwxr-x---. 2 root root 4096 Jun 10 18:01 test
    -rw-r-----. 1 root root 18 Jun 10 18:01 xtrabackup_binlog_info
    -rw-r-----. 1 root root 113 Jun 10 18:01 xtrabackup_checkpoints
    -rw-r-----. 1 root root 482 Jun 10 18:01 xtrabackup_info
    -rw-r-----. 1 root root 2560 Jun 10 18:01 xtrabackup_logfile

    7、 主库创建同步用户
    mysql> GRANT replication slave ON *.* TO 'slave25'@'%' IDENTIFIED BY 'oracle';
    Query OK, 0 rows affected (0.05 sec)

    8、 从库恢复主库数据
    -- 从库将原有datadir文件夹重命名到新位置,并创建原文件夹
    [root@mysql01 ~]# mv /data/mysql /data/mysqlbak
    [root@mysql01 ~]# mkdir -p /data/mysql
    -- innobackupex apply-log
    [root@mysql01 ~]# innobackupex --apply-log --user=oracle
    --password=oracle --port=3606 /xtrabackup/full/2017-06-10_17-50-19/
    -- innobackupex copy 恢复的文件到原来的数据位置
    [root@mysql01 mysql]# innobackupex --defaults-file=/etc/my.cnf --user=root
    --copy-back /xtrabackup/full/2017-06-10_17-50-19/

    170610 18:25:11 completed OK!
    -- 创建binlog目录与relaylog目录并赋权
    [root@mysql01 ~]# mkdir -p /data/mysql/binarylog
    [root@mysql01 ~]# mkdir -p /data/mysql/relaylog/
    [root@mysql01 mysql]# chown -R mysql:mysql /data/mysql

    9、 从库配置与检测
    -- 从库启动
    [root@mysql01 mysql]# mysqld_safe --defaults-file=/etc/my.cnf &
    -- 从库指定与主库同步的基本信息
    mysql>
    change master to
    master_host='10.219.24.25',
    master_port=3306,
    master_user='slave25',
    master_password='oracle',
    master_auto_position=1;
    Query OK, 0 rows affected, 2 warnings (0.04 sec)

    参数解释:
    MASTER_HOST : 设置要连接的主服务器的ip地址
    MASTER_USER : 设置要连接的主服务器的用户名
    MASTER_PASSWORD : 设置要连接的主服务器的密码
    MASTER_AUTO_POSITION : GTID模式,基于事务ID复制
    -- 启动slave 状态(开始监听msater的变化)
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)
    -- 查看slave的状态.
    mysql> show slave status G;
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 10.219.24.25
    Master_User: slave25
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: binlog.000016
    Read_Master_Log_Pos: 151
    Relay_Log_File: relay.000021
    Relay_Log_Pos: 355
    Relay_Master_Log_File: binlog.000016
    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
    Exec_Master_Log_Pos: 151
    Relay_Log_Space: 518
    Until_Condition: None
    Until_Log_File:
    Until_Log_Pos: 0
    Master_SSL_Allowed: No
    Master_SSL_CA_File:
    Master_SSL_CA_Path:
    Master_SSL_Cert:
    Master_SSL_Cipher:
    Master_SSL_Key:
    Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
    Last_IO_Errno: 0
    Last_IO_Error:
    Last_SQL_Errno: 0
    Last_SQL_Error:
    Replicate_Ignore_Server_Ids:
    Master_Server_Id: 25
    Master_UUID: 29d68531-4cf9-11e7-8e1f-000c297c4100
    Master_Info_File: /data/mysql/master.info
    SQL_Delay: 0
    SQL_Remaining_Delay: NULL
    Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
    Master_Retry_Count: 86400
    Master_Bind:
    Last_IO_Error_Timestamp:
    Last_SQL_Error_Timestamp:
    Master_SSL_Crl:
    Master_SSL_Crlpath:
    Retrieved_Gtid_Set:
    Executed_Gtid_Set:
    Auto_Position: 1
    1 row in set (0.00 sec)

    ERROR:
    No query specified

    10、 主从同步检查
    -- 主库
    mysql> create database gtid;
    Query OK, 1 row affected (0.00 sec)
    mysql> use gtid
    Database changed
    mysql> create table gtid(id int);
    Query OK, 0 rows affected (0.50 sec)
    mysql> insert into gtid values(1);
    Query OK, 1 row affected (0.00 sec)

    -- 从库
    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | binarylog |
    | gtid |
    | mysql |
    | performance_schema |
    | relaylog |
    | repl |
    | test |
    +--------------------+
    8 rows in set (0.00 sec)
    mysql> use gtid
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    Database changed
    mysql> select * from gtid;
    +------+
    | id |
    +------+
    | 1 |
    +------+
    1 row in set (0.00 sec) > GTID同步成功!

  • 相关阅读:
    PMP-合同类型
    一、JavaScript简介
    编写一程序,从键盘输入10个实数,计算并输出算术平均数
    从键盘输入3个整数,输出其中最大数
    穷举法判断键入的数是不是素数
    2.事件每天执行
    1.mysql 启动服务提示输入密码
    二、linux 用户授权
    1.maven打包乱码
    1.下载谷歌插件
  • 原文地址:https://www.cnblogs.com/andy6/p/6984480.html
Copyright © 2011-2022 走看看