现在的位置: 首页 > 综合 > 正文

mysql5.5 建立主从复制 ( set up master-slave replication )

2013年04月03日 ⁄ 综合 ⁄ 共 1702字 ⁄ 字号 评论关闭

mysql5.5 建立主从复制 ( set up replication )

1.注意事项:

    (1)主从服务器版本要一致

    (2)要修改root密码,切不可用初始密码 ( 此与主从复制无关,为数据库安全考虑耳 );

2.配置主服务器master:

    [mysqld]
    log-bin=mysql-bin   //必须启用二进制日志
    server-id=1   //必须是服务器唯一id,默认是0,

    重启主服务器

3.配置从服务器slave:

    [mysqld]
    #log-bin=mysql-bin   // 从服务器的二进制日志非必须启用,然而如果该从服务器要作为其他服务器的主服务器时则需要启用;若启用二进制日志,可以用作数据备份和功能恢复
    server-id=2   //必须服务器唯一ID, 默认是0,不要与服务器一样

    重启从服务器

4.在主服务器给从服务器分配一个具有replication slave权限的帐户

    mysql> CREATE USER 'repl'@'192.168.1.103' IDENTIFIED BY 'slavepass';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.103';

5.获得复制主服务器二进制日志的坐标( Obtaining the Replication Master Binary Log Coordinates )

    (1).在主服务器命令行启用一个session连接mysql,刷新所有的表和并阻止写入语句:
       

 mysql> FLUSH TABLES WITH READ LOCK; ( 要解锁退出该会话即可 )

    (2).在主服务器通过命令行新开一个session连接mysql,使用语句SHOW MASTE STATUS判断出当前二进制日志的文件名和位置:

        mysql > SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |      107 |              |                  |
    +------------------+----------+--------------+------------------+
        记下二进制文件名:mysql-bin.000003和位置107

6.使用mysqldump创建一个数据快照

    (1).确定主服务器读写被锁,见上一步5.1

    (2).使用mysqldump导出所有需要复制的数据库或者选择其中一个,例如:

       

 shell> mysqldump --all-databases --lock-all-tables >dbdump.db

    (3).解锁之前锁定的表:

        mysql> UNLOCK TABLES;
        (另:关闭连接也可以解锁)

7.交直一步创建的快照导入从服务器:

    (1).把dbdump.db(即上一步从主服务器导出的文件)拷贝到从服务器

    (2).连接从服务器并执行stop slave;

     

   mysql > stop slave;

    (3).导入文件

        mysql > create databases 'dataname';
        mysql > use 'dataname';
        mysql > source dbdump.db;

8.配置复制的主服务器的坐标 

        mysql> CHANGE MASTER TO
            ->     MASTER_HOST='192.168.1.103',
            ->     MASTER_USER='repl',
            ->     MASTER_PASSWORD='slavepass',
            ->     MASTER_LOG_FILE='mysql-bin.000003',
            ->     MASTER_LOG_POS=107

              注:执行该语句之前必须确保没有slave线程运行,否则报错

9.启动slave线程:

      

  mysql > start slave;

10.在主服务器中插入一条数据,查看从服务器是否有了.

    

抱歉!评论已关闭.