zoukankan      html  css  js  c++  java
  • 2-四种主从搭建流程

    文档:2-四种主从搭建流程.note
    链接:http://note.youdao.com/noteshare?id=534e2789f549b5c55b7a98a1a7fda44b&sub=6EB5486BE915456D9876523BD3534845

    异步主从复制搭建过程:

    准备两台linux,主server,从agent

    1、检查mysql配置文件有没有开启binlog

    [root@localhost ~]# vim /etc/my.cnf

    log_bin=server

    server_id=1

    service mysqld restart

    ls /data

    -rw-r----- 1 mysql mysql 177 May 1 14:58 server.000001

    -rw-r----- 1 mysql mysql 80 May 1 15:02 server.index

    手工切换logs文件:

    mysql>flush logs;

    2、主库安装xtrabackup

    # yum install perl-DBD-MySQL -y

    # rpm -ivh libev4-4.15-7.1.x86_64.rpm

    # rpm -ivh libev-devel-4.15-21.1.x86_64.rpm

    # rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

    # rpm -ivh percona-xtrabackup-24-debuginfo-2.4.4-1.el6.x86_64.rpm

    yum install percona-xtrabackup-test-24-2.4.4-1.el6.x86_64.rpm

    [root@rh-88 xtrabackup2.4.4]# yum localinstall ./*.rpm

    新建一个备份目录

    mkdir /backup

    做一个全备

    innobackupex --user=root --password=123 --socket=/tmp/mysql.socket /backup/

    innobackupex --user=root --password=123 /backup/

    [root@localhost ~]# cd /backup/

    [root@localhost backup]# ll

    total 12

    drwxr-x--- 2 root root 4096 May 1 15:41 2019-05-01_15-41-35

    drwxr-x--- 2 root root 4096 May 1 15:43 2019-05-01_15-43-47

    drwxr-x--- 5 root root 4096 May 1 15:50 2019-05-01_15-50-52

    将备份内容放到客户机

    [root@localhost 2019-05-01_15-50-52]# scp -r 2019-05-01_15-50-52/
    root@172.16.88.221 /root/

    3、从库配置bin_log

    [root@rh-88 ~]# vim /etc/my.cnf

    read_only=1

    server_id=2

    binlog_format=row

    log_bin=slave

    关闭数据库

    [root@rh-88 ~]# service mysqld stop

    进入mysql安装目录

    [root@rh-88 ~]# cd /var/lib/mysql

    将库中全部删掉

    [root@rh-88 mysql]# rm -rf *

    从库安装xtrabackup

    4、恢复备份

    应用日志

    [root@rh-88 xtrabackup2.4.4]# innobackupex --apply-log
    /root/2019-05-01_15-50-52/

    查看状态

    [root@rh-88 2019-05-01_15-50-52]# cd /root/2019-05-01_15-50-52

    [root@rh-88 2019-05-01_15-50-52]# cat xtrabackup_checkpoints

    backup_type = full-prepared

    from_lsn = 0

    to_lsn = 2534580

    last_lsn = 2534589

    compact = 0

    recover_binlog_info = 0

    从库恢复

    [root@rh-88 2019-05-01_15-50-52]# innobackupex --copy-back
    /root/2019-05-01_15-50-52/

    [root@rh-88 2019-05-01_15-50-52]# cd /var/lib/mysql

    修改属主属组

    [root@rh-88 mysql]# chown -R mysql:mysql .

    查看

    [root@rh-88 mysql]# cat xtrabackup_info

    uuid = da8b5a8d-6be5-11e9-9925-000c2967eaf1

    name =

    tool_name = innobackupex

    tool_command = --user=root --password=... /backup/

    tool_version = 2.4.4

    ibbackup_version = 2.4.4

    server_version = 5.7.17

    start_time = 2019-05-01 15:50:52

    end_time = 2019-05-01 15:50:56

    lock_time = 0

    binlog_pos =

    innodb_from_lsn = 0

    innodb_to_lsn = 2534580

    partial = N

    incremental = N

    format = file

    compact = N

    compressed = N

    encrypted = N

    启动数据库

    [root@rh-88 mysql]# service mysqld start

    5、在主库上专门给从库建立一个复制用的用户

    mysql> grant replication slave,replication client on *.* to 'repl'@'%'
    identified by 'repl';

    6、在从库上登录

    [root@rh-88 mysql]# mysql -urepl -prepl -hserver -P3306

    验证一下

    mysql> show databases;

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    +--------------------+

    1 row in set (0.01 sec)

    7、确定主从关系

    mysql> ? change master to

    CHANGE MASTER TO

    MASTER_HOST='master2.mycompany.com',

    MASTER_USER='replication',

    MASTER_PASSWORD='bigs3cret',

    MASTER_PORT=3306,

    MASTER_LOG_FILE='master2-bin.001',

    MASTER_LOG_POS=4,

    MASTER_CONNECT_RETRY=10;

    [root@rh-88 mysql]# mysql -uroot -p123

    mysql> CHANGE MASTER TO
    MASTER_HOST='172.16.88.220',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_PORT=3306,MASTER_LOG_FILE='slave.000001',MASTER_LOG_POS=806978,MASTER_CONNECT_RETRY=10;

    Query OK, 0 rows affected, 2 warnings (0.04 sec)

    开启从库

    mysql> start slave;

    Query OK, 0 rows affected (0.02 sec)

    查看线程状态

    查看从库上有没有正常生成主从的IO应用线程

    mysql> mysql> show processlist;

    clipboard.png

    详细判断主从关系是否正常跑

    mysql> show slave statusG

    clipboard.png

    主库上

    查看当前服务器上bin_log(server.000002)已经跑到哪一个Position了

    mysql> show master status;

    clipboard.png

    主从复制存在的问题

    主从存在问题:

    主库宕机后,数据可能丢失

    主从只有一个sql thread,主库写压力大,主从延时大

    主库故障,从库需要手工拉起对外提供服务

    如何解决:

    半同步复制——解决数据丢失问题

    并行复制——解决从库复制延迟问题

    MHA——解决故障、在线切换问题

    半同步复制过程

    clipboard.png

    半同步复制检测

    检查当前版本是否支持半同步

    主从都需要检查

    mysql> select @@have_dynamic_loading;

    模块目录:

    /usr/local/mysql/lib/plugin/:semisync_master.so和semisync_slave.so

    /usr/lib64/mysql/plugin

    主库加载模块:

    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

    从库加载模块:

    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

    检查模块加载情况:

    mysql> select * from mysql.plugin;

    开启主库半同步:

    set global rpl_semi_sync_master_enabled=1;

    set global rpl_semi_sync_master_timeout=30000; 单位毫秒

    从库开启半同步复制:

    set global rpl_semi_sync_slave_enabled=1;

    如果是异步复制转半同步复制:

    需要重启下从库上的IO线程:

    stop slave io_thread;start slave io_thread;

    并行复制

    从库配置文件修改

    [root@rh-88 plugin]# vim /etc/my.cnf

    并行参数:

    slave_preserve_commit_order=1

    slave_parallel_type=logical_clock

    slave_parallel_workers=4

    log_slave_updates=1

    relay_log_recovery=ON

    #master_info_repository=TABLE

    #relay_log_info_repository=TABLE

    | mysql | slave_master_info |

    | mysql | slave_relay_log_info |

    重启从库数据库

    [root@rh-88 plugin]# service mysqld restart

    GTID主从

    全局事务ID

    优点:不用手工设置日志偏移量,很方便的进行故障转移;
    如果启动log_slave_updates那么从库不会丢失主库上的任何修改

    MASTER_AUTO_POSITION = {0|1}

    缺点:只支持5.6之后的版本

    主库配置:

    [root@rh-88 plugin]# vim /etc/my.cnf

    gtid-mode=on

    enforce-gtid-consistency=1

    重启数据库

    从库配置:

    [root@rh-88 plugin]# vim /etc/my.cnf

    gtid-mode=on

    enforce-gtid-consistency=1

    重启数据库

    在主库查看:

    可以查看 server_uuid 号:show global variables like "%uuid%";

    show master status;

    Executed_Gtid_Set现在是空的,发现没有gtid记录(如果刚开始开启binlog的话)

    创建一张表

    create table g1;

    再次查看show master status;

    可以查看到在 Executed_Gtid_Set 信息

    主库备份:

    innobackupex --user=root --password=123 /backup/

    应用

    (gtid模式此处不用看)

    查看xtrabackup_binlog_info或者xtrabackup_info:

    binlog_pos = filename 'server.000001', position '186479', GTID of the last
    change '7e48f5d6-25f7-11e8-bdb4-000c29208fda:1-616'

    然后将 备份文件传输到从库 :

    scp -r /backup/2018-06-25_06-50-33/ root@172.16.120.13:/backup/

    在从库上进行恢复:

    innobackupex --move-back /backup/2018-06-25_06-50-33/

    修改权限:chown -R mysql:mysql /mysql/

    启动数据库:service mysqld start

    主库创建复制用户

    然后从库进行同步 CHANGE TO 操作

    CHANGE MASTER TO
    MASTER_HOST='172.16.120.23',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_PORT=3306,master_auto_position=1;

    启动从库:start slave; show slave status看状态

    然后进行测试即可

    测试从库操作

    测试主库操作同步情况

  • 相关阅读:
    js动态给对象添加事件
    JavaScript中提供获取HTML元素位置的属性:
    javascript:是什么意思
    Vector与ArrayList区别
    Java核心类库——集合的迭代(遍历) Iterator接口
    实例1(文字的放大缩小)
    基本控件的使用
    关于Android那些事
    初识Android
    JavaScript(Two)
  • 原文地址:https://www.cnblogs.com/qluzzh/p/11072236.html
Copyright © 2011-2022 走看看