如何设置Mysql同步(Replication) 分享修改删除

------------------------------------------------------------------------------------------
MySQL提供了数据库的同步功能,这对我们实现数据库冗灾、备份、恢复、负载均衡等都是有极大帮助的。
一、准备服务器
   由于MySQL不同版本之间(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本
假设同步Master的主机名为rep1,Slave主机名为rep2,2个MySQL的basedir目录都是/usr/local/mysql,datadir都是/usr/local/mysql/var.
二、设置同步服务器
1、设置同步Master
每个同步服务器都必须设定一个唯一的编号,否则同步不能正常运行。接下来开始修改my.cnf,增加以下几行:
    server-id = 1
    log-bin
    binlog-ignore-db=mysql
然后再Master上增加一个账号专门用于同步,如下:
    mysql>grant replication slave on *.* to rep@rep2 identified by 'rep';
如果想要在Slave上有权限执行"Load table from master" 或者"Load data from master"语句的话,必须授予全局的FILE和SELECT权限:
    mysql>GRANT FILE,SELECT,REPLICATION SLAVE on *.* TO rep@rep2 IDENTIFIED BY 'rep';
第三行表示不记录数据库mysql的更新日志,这就避免了Master上的权限设置等被同步到Slave上,如果对这方面没有限制,就可以不设置这个参数。
 
接下来备份Master上的数据,首先执行:
    mysql>FLUSH TABLES WITH READ LOCK;
不要退出这个终端,否则锁失效;导出数据,可以直接打包压缩数据文件,也可以使用mysqldump工具来做,推荐前者,这样更为便捷简便。
    root$cd /usr/local/mysql
    root$ tar zcf var.tar.gz ./var
然后将这些数据拷贝到Slave服务器上,解开,设置好正确的权限及属主,之后,执行"UNLOCK TABLES"语句释放锁
2、设置Slave
修改my.cnf,增加:
    server-id = 2
    master-host = rep1
    master-user = rep
    master-password = rep
    master-port = 3306
    replicate-ignore-db = mysql #略过同步的数据库名,如果有多个,请设置多次
    replicate-do-db = hrj #想要同步的数据库名,如果有多个,请设置多次
在Slave上检验一下是否能正确连接Master,并具备相应权限
    root$mysql -hrep1 -urep -prep
    mysql>SHOW GRANTS;
    
现在,启动Slave。登录Slave,查看一下同步状态:
    mysql -hlocalhost -uroot
    mysql>SHOW SLAVE STATUS\G
可以看到,Slave_IO_Running和Slave_SQL_Running两列为'Yes',表明Slave的I/O和SQL线程都在正常运行。
 
至此,同步设置成功。
三、同步FAQ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章