zoukankan      html  css  js  c++  java
  • MySQL的复制主从设置

    1、确保主从服务器一至

    2、GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2' IDENTIFIED BY '1234test';

    3、修改/etc/my.cnf 下面的

    log-bin =/home/mysql/log/mysql-bin.log

    server-id=1;

    4、在主服务器上,设置读锁定有效,这个操作是为了确保没有数据库操作

    flush tables with read lock;

    5、然后到主服务器上当前的二进制日志名和偏移量值。这个操作的目的是为了在从数据库启动以后,从这个点开始进行数据的恢复。

    show master status;

    6、现在主数据库服务器已经停止了更新操作,需要生成主数据库的备份,备份的方式有很多种,可以直接操作系统下cp 全部的数据文件 到数据库服务器上,也可以通过mysqldump 导出数据或者使用ibbackup工具进行数据备份,那么直接cp 数据文件应该是最快的生成快照的方法:

    tar -cvf data.tar data

    7、主数据库的备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器执行:

    unlock tables;

    8、将主数据库的一致性备份恢复到从数据上。如果是使用.tar 打包的文件包,只需要解开到相应的目录即可

    9、修改从数据库的配置文件my.cnf 增加server-id参数。注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己的唯一的server-id值

    my.cnf中修改:

    [mysqld]

    server-id=2

    10、在从服务器上,使用--skip-slave-start 选项启动从数据库,这样不会立即启动从数据服务上的复制进程,方便我们对从数据库的服务进行进一步的配置:

    ./bin/mysqld_safe --skip-slave-start &

    Starting mysqld daemon with databases from /home/mysql/sysdb/data

    11、对从数据库数据库服务器做相应设置,指定复制使用的用户 ,主数据库服务器的IP,端口以及开始执行复制的日志文件 和位置等:

    CHANGE MASTER TO

    MASTER_HOST='MASTER_HOST_NAME',

    MASTER_PORT='MASTER_HOST_NAME',

    MASTER_USER='REPLICATION_USER_NAME',

    MASTER_PASSWORD='REPLICATION_PASSWORD',

    MASTER_LOG_FILE='RECORDED_LOG_FILE_NAME',

    MASTER_LOG_POS=RECORDED_LOG_POSITION;

    举例说明

    CHANGE MASTER TO

    MASTER_HOST='192.168.1.3',

    MASTER_HOST='3306',

    MASTER_USER='repl',

    MASTER_PASSWORD='1234test',

    MASTER_LOG_FILE='mysql-bin.000039',

    MASTER_LOG_POS=102;

    12、在从服务器上,启动slave线程:

    start slave;

    13、这时slave上执行show processlist 命令将显示类似如下进程: 

      show processlist \G;

    14、也可以测试复制服务器的正确性,在主数据库上执行一个更新操作,观察是否在从数据上同步。在主数据库上test数据创建一个测试表,插入数据:

    use test

    show tables;

    create table repl_test(id int);

    insert into repl_test values(1),(2),(3),(4),(5);

    15、在从数据库上检查新表是否被创建,数据是否同步:

    use test

    show tables;

    select * from rela_test;

    可以看到数据可以正确同步到从数据库上,复制服务器配置成功完成.

    主要复制启动选项

    read-only

    1、主数据库中创建用户:

    grant all privileges on test.* to 'lisa'@'%' identified by '1234';

    2、从服务器使用该用户登陆 ,可以删除表中的记录

    mysql -ulisa -p1234 test

    select  * from repl_test;

    delete from repl_test;

    mysqladmin -uroot -pshutdown

    ./bin/mysqld_safe --read-only&

    Starting mysqld daemon with databases from /home/mysql/sysdb/data

    4、然后再使用Lisa用户登录数据库,进行删除操作:

    mysql -ulias -p1234 test

    select * from repl_test;

    select * from repl_test;

    delete from repl_test;

    日常管理维护:

    查看从服务器状态

    show slave status \G;

    主从服务器同步维护

      在某些繁忙的OLTP(在线事务处理)系统上,由于主服务器更新频繁,而从服务器由于各种原因(比如硬件性能较差)导致更新速度较慢,从而使得主从服务器之间的数据差距,常用方法 在负载较低的时候阻塞主数据库的更新,强制主从数据库更新同步。

    1、在主服务器上,执行以下语句(注意,会阻塞主数据库的所有更新操作):

    FLUSH tables with read lock;

    show master status;

    记录show语句的输出的日志名和偏移量,这些是从服务器复制的目的坐标。

    2、在从服务器上,执行下面语句,其中MASTER_POS_WAIT()函数的参数是前面步骤中得到的复制坐标值:

    select MASTER_POS_WAIT('mysql-bin.000039','974');

    在主服务器上,执行下面的语句允许主服务器重新开始处理更新:

    UNLOCK TABLES;

  • 相关阅读:
    演示使用string对象(续)
    P2216 [HAOI2007]理想的正方形 单调队列
    SP1805 HISTOGRA
    P4556 [Vani有约会]雨天的尾巴 树链剖分 线段树合并
    codeforces 600E 线段树合并
    HDU2197 本原串
    P3806 【模板】点分治1
    牛客10 Popping Balloons
    P3261 [JLOI2015]城池攻占 左偏树
    P4549 【模板】裴蜀定理
  • 原文地址:https://www.cnblogs.com/jackluo/p/2864614.html
Copyright © 2011-2022 走看看