时间: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