当前位置:首页 > 资讯教程 > 技术栏目 > MYSQL如何做主从的复制?

MYSQL如何做主从的复制?

来源:网络整理 2019-06-21 0人评论
当网站并发量大时,最先扛不住的可能是数据库了。所以需要多台服务器进行分担压力。这时会用到mysql主从同步,把mysql服务器数据分到多台服务器中。
mysql5.7主从(Master/Slave)同步配置
 
Master的配置
修改/etc/my.cnf
 
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
ft_min_word_len=1
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/slow.log
long_query_time=2
 
 
log-bin=mysql-bin
log-bin=/usr/local/mysql/var/mysql-bin.log      #日志存放地址文件
server-id=1     #必须唯一值
binlog-do-db=库名1      #需要同步的数据库
binlog-do-db=库名2      #需要同步的数据库
expire_logs_days = 10       #日志保存天数
early-plugin-load = ""
 
第一种方法
#创建同步帐号
grant replication slave on *.* to '同步帐号名'@'允许ip' identified by '密码';
#刷新权限
flush  privileges;
 
第二种方法
#创建同步帐号也可以通过phpmyadmin来创建权限帐号;
全局权限可以全选;也可以只勾选 REPLICATION SLAVE  权限
 
 
#锁住主库表只允许读;主要是以防导出数据库的时候有新数据进来导致主从库不一致
flush tables with read lock;
 
#查看主服务器上当前的二进制日志名和偏移量值这里的file 和position 要和从库上的一致;记录住从库配置时需要用到
show master status\G
 
 
#退出mysql进行导出需要同步的数据库;如果加 -l -F参数    -l:锁定表,直至导出完成自行解锁;-F:备份前刷新日志。
 
/usr/local/mysql/bin/mysqldump -u root -p"密码" 数据库名 > /root/backup.sql
 
 
#解锁主库表
unlock tables;
 
 
 
从库配置
 
导入主库备份好的数据库
 
/usr/bin/mysql -u root -p"密码" 数据库名 < /root/backup.sql
 
 
修改配置
vi /etc/my.cnf
 
 
log-bin=mysql-bin
log-bin=/usr/local/mysql/var/mysql-bin.log      #日志存放地址文件
server-id=2     #必须唯一值
binlog-do-db=库名1        #需要同步的数据库
binlog-do-db=库名2        #需要同步的数据库
binlog_format=mixed         #日志类型:混合模式
expire_logs_days = 10       #日志保存天数
early-plugin-load = ""
slave-skip-errors=1032      #跳转1032错误;即不存的数据更新
 
 
#登录mysql进行配置修改
 
mysql> stop slave;
mysql> change master to
-> master_host='192.168.1.10', #master的ip
-> master_user='backup', #备份用户名
-> master_password='123456', #密码
-> master_log_file='mysql-bin.000010', #要与master的参数一致
-> master_log_pos=154; #要与master的参数一致
mysql> start slave; #启动从机器

 
mysql> show slave status\G
 
 
注意事项
 
如果从服务器是克隆的主服务器,那么server-uuid的值肯定是一样的,不然后面主从复制报错误1593,修改以后重启mysql
 
首先要查找到mysql的安装地址
show variables like 'datadir';
 
+---------------+-----------------+
| Variable_name | Value   |
+---------------+-----------------+
| datadir  | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
 
//然后通过mysql生成一个uuid进行记录等会用于修改
select uuid()
 
+--------------------------------------+
| uuid()        |
+--------------------------------------+
| 2674149f-5083-11e8-be4b-080027a1f331 |
+--------------------------------------+
 
然后进入datadir目录
cd /var/lib/mysql/
vi auto.cnf
//修改server-uuid
 
重启mysql
service mysqld restart
相关阅读
期待你的留言
已有( 0 )条评论
昵称 *
邮箱

*验证码: 验证码

快评短语
写的太好了,正好为我解惑 小编努力,可以写的更好! 无感觉,然并卵 一般般,不详细 还不错,希望能更好 没啥事,就来灌一下水 失望,还以为找到自己需要的 还有其它的吗?
推荐下载
热门下载
  • 周排行
  • 月排行