您的位置:首页 > 运维架构 > Linux

linux mysql 主从同步配置(不同服务器)

2018-03-13 17:37 453 查看
此配置是我在本地的两台虚拟机上面测试的。(延迟同步请自行百度)主:192.168.0.102副:192.168.0.103一、安装mysql(此步略过)二、主库配置(master):1、修改mysql的配置文件,按照其他博主写的文章上面都说是在/etc/mysql/my.cnf,但是我打开该文件里面没有具体的配置参数,我用的ubuntu16.04配置文件位置:/etc/mysql/mysql.conf.d/mysqld.cnf    如果第一个路径下面没有就在第二个路径下面修改。2、修改内容:在[mysqld]中添加server-id = 1 #唯一标识log_bin = master-bin  #开启二进制日志log_bin_index = master-bin.index  #二进制的索引文件名binlog_do_db = my_data  #指定记录二进制日志的数据库binlog_ignore_db = mysql #忽指定不记录二进制日志的数据库3、登录主服务器创建从服务器用到的账户和权限:grant replication slave on *.* to 'username' @'192.168.0.%' identified by 'pwd';(192.168.0.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP,username/pwd自己设置)4、退出mysql,重启mysql: service mysql restart5、进入mysql,查看master状态:show master status;


三、从库配置(slave):1、配置文件位置同上修改内容server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index理解:relay log很多方面都跟binary log差不多,区别是:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。2、重启数据库3、登录从服务器,连接master服务器(不要复制注释)change master tomaster_host='192.168.0.102', #主库地址master_port=3306, #端口master_user='username', #配置主库的3、下面的usernamemaster_password='pwd', #配置主库的3、下面的pwdmaster_log_file='master-bin.000001', #从主库查出来的二进制文件名 (一下面的5、图片中的File)master_log_pos=2403; #从主库查出来的Position(一下面的5、图片中的Position)
4、启动slave,start slave;5、查看状态 show slave status\G;


此处箭头指向的参数均为Yes才算成功。
四、常见问题:1、二进制文件写入权限,一般不会出现这个问题。
2、如果你的本地系统是通过克隆来的,那你需要考虑两个myslq的uuid重复了的问题。解决办法:我的配置文件在:/var/lib/mysql/auto.cnf      只需要把这个文件修改名字建议不删除,重启之后会重新生成新的文件,新的uuid可解决。
3、在你配置完成后,对主库进行增删改的时候,从库会相应的进行数据的同步,但是如果你主动去对从库进行写入操作或者从库重启之后,slave会报错,解决办法:有两种:1,设置跳过错误,但是我觉得不是很好用,我说另一种手动配置的方式。先停止slave:stop slave;查询主库master状态,执行从库配置的3,4,5操作,可达到重新配置同步。
4、当出现同步失败的时候,首先查看从库的slave状态,会有报错信息,根据报错信息来进行相应的处理。show slave status;

如果是线上环境,应该还要做一些处理,比如说写一个shell脚本当slave出错的时候进行通知等。次步骤,后续可能会写在博客上。
以上是我配置完之后写的记录,中间如果有不完全的地方,请查阅百度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: