当前位置:Gxlcms > 数据库问题 > mysql主从复制

mysql主从复制

时间:2021-07-01 10:21:17 帮助过:39人阅读

    mysql > grant replication slave on *.* to ‘rep1‘@‘192.168.0.222‘ identified by ‘123‘;

2. 修改my.cnf配置

    第一步,把bind-address=127.0.0.1注释掉,或者把地址修改为允许远程访问的ip地址,比如192.168.0.222。 如果允许所有ip访问,可以改为0.0.0.0

    第二步,开启 BINLOG,并设置 server-id 的值。这两个参数的修改需要重新启动数据库服务才可以生效。

    My.cnf 中修改:
    [mysqld]
    log-bin = /var/log/mysql/mysql-bin.log (5.6默认是这个,也可以改为其他路径)
    server-id = 1 

    #binlog-ignore-db=testdb1   表示不需要同步的数据库

    #binlog-do-db=testdb    表示需要同步的数据库  

3. 在主服务器上,设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照

    mysql > flush tables with read lock

4. 主服务器上获取当前2进制日志名和偏移量值,以便在从数据库启动后,从这个点开始进行数据恢复

    mysql > show master status;

5. 现在主数据库已经停止更新操作,需要生成主数据库的备份,可以直接cp或者使用mysqldump,比如mysqldump -uroot -p --all-database > all.sql 备份所有数据库。

6. 主数据库备份好后,恢复写操作

    unlock tables;

7. 把数据导入到从从服务器数据库

 

 

三. 从服务器数据库设置

1. 修改my.cnf,增加server-id参数,值必须是唯一的

    [mysqld]

    server-id = 2

    #replicate-ignore-db=testdb1 不需要同步的数据库

    #replicate-do-db=testdb    需要同步的数据库

2. 使用--skip-slave-start 选项启动从数据库,这样不会立即启动从数据库服务上的复制进程,方便对从数据库进行更多配置,mysql5.6执行 ./usr/bin/mysqld_safe --skip-slave-start &    

    另一种方式是用root用户正常进入mysql后,执行stop slave命令 (推荐这种方法,简单)

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

    mysql > change master to 

    -> master_host = ‘192.168.0.221‘,

    -> master_user=‘rep1‘,

    -> master_password=‘123‘,

    -> master_log_file=‘mysql-bin.000001‘,

    -> master_log_pos=‘120‘;  #最后这两项是在上面操作主数据库中show master status得到的数据

4. 启动slave线程    mysql> start slave;

5. 执行show processlist \G 查看,或者显示2个connect表示设置成功,另一种方法是mysql> show slave status \G; 查看配置的信息:

    在输出的信息中的Slave_IO_Running和Slave_SQL_Running都为yes,那么表示配置成功   6. 主数据库上更新内容,验证从数据库是否正确同步数据。            

mysql主从复制

标签:sudo   注释   comm   数据库操作   stat   进程   nec   res   body   

人气教程排行