每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了。接下来开始修改 my.cnf,增加以下几行:
server-id = 1
log-bin
set-variable=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上的数据,首先执行如下SQL语句:
mysql>FLUSH TABLES WITH READ LOCK
不要退出这个终端,否则这个锁就不生效了;接着导出数据,可以直接打包压缩数据文件,也可以使用mysqldump工具来做,推荐前者的方法,这样更为快捷简便。
root$cd /usr/local/mysqlhttps://zhidao.baidu.com/question/1541845601453826507.html
目测不是因为存储过程内sql导致的死锁:因为存储过程内只有一条insert语句会持有锁,也只持有一把锁。所以不会导致死锁。
引起死锁肯定是由于资源共享冲突,事务是保证一个 *** 作单元能执行顺利或失败,保证数据的完整性的。
对于资源冲突肯定是需要锁来控制,也就是使用数据的隔离机制和同步锁来控制的,数据库的隔离机制修改影响会比较大,所以建议在dao层使用同步或者加锁来防止deadlock
但是可能会影响部分性能
入股你的业务是在线的业务,数据在不断的交换,如果不锁表的话,日志文件的位置会不断的变化,你做主从同步肯定是不成功的,因为你不锁主库,主库的日志文件的位置会不断的变化,从库无法定位主库的日志文件位置欢迎分享,转载请注明来源:内存溢出
评论列表(0条)