首页 > 代码库 > mysql 主从复制
mysql 主从复制
1、mysql的主从复制方案跟scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输。只不过是Mysql自带这种功能而无需借助第三方软件而已。
2、它的复制并不是从磁盘上复制,而是通过逻辑的binlog日志中抓取sql语句重新应用到mysql数据库中。
3、实现主从复制,master需要打开my.cnf中的binlog日志功能。具体操作是增加以下参数:
[mysqld]
log-bin =/data/3306/mysql-bin --从数据库可以不设置。避免影响性能。当然设置了也没关系。
注意该语句需要放在[mysqld]模块下。
4、用于主从复制的所有数据库实例的server-id都不能相同。这点必须注意。
注意:my.cnf中参数是不能重复的。修改后需要重启数据库
5、建立用于复制的账号:登陆到主数据库,然后执行如下语句:
grant replication slave on *.* to ‘rep‘@‘10.108.199.%‘ identified by ‘redhat‘;可以看到只授权了replication的权限。只允许10.108.199网段以rep访问。
select user,host from mysql.user;--查看结果。
6、备份数据库语句:
mysqldump -uroot -p‘redhat‘ -S /data/3306/mysql.sock --events -A -B |gzip > /data/backup/mysql_bak.$(date +%F).sql.gz
然后解压。
然后把解压的文件恢复到另外一个实例中。
mysql -uroot -p‘redhat‘ -S /data/3308/mysql.sock < mysql_bak.2017-06-19.sql
登陆从数据库:
CHANGE MASTER TO MASTER_HOST=‘10.0.0.7‘, MASTER_PORT=3306, MASTER_USER=‘rep‘, MASTER_PASSWORD=‘redhat‘, MASTER_LOG_FILE=‘mysql-bin.000001‘, MASTER_LOG_POS=1878;--对应的参数需要修改。
启动slave;查看slave状态;
start slave;
show slave status\G;
主要看到三个指标:IO_Running=yes;SQL_Running=yes;_Behind_Master=0;
如果这三个指标OK,说明主从设置成功。
以上内容请结合《跟老男孩学linux 运维--web集群实践》有更好理解(因为为是在学习这本书的时候做的笔记)
本文出自 “让往事如烟” 博客,请务必保留此出处http://kalson.blog.51cto.com/12267030/1953969
mysql 主从复制