主服务器IP:192.168.157.1 从服务器IP:192.168.157.2
192.168.157.1主操作:
首先要保证主从两台数据库的版本,数据库表等一致, 本教程是基于5.7, 64位的mysql数据库, 系统是ubuntu 16.04, 主从均为虚拟机
主节点配置: 编译/etc/my.cnf文件的[mysqld]下加入如下配置 server_id = 1 #主数据库端ID号 log-bin = mysql-bin #开启二进制日志 binlog-do-db = mytest #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可 auto_increment_offset = 1 #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突 auto_increment_increment = 1 #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突 log_bin_trust_function_creators = 1 #将函数复制到slave
重启mysql service mysqld restart
登陆mysql mysql -uroot -p1234
配置从服务器登录的用户密码,权限等, slave 为登录用户名, 192.168.157.2 为从库的ip,slpass 为从服务器登录的密码,请根据自身的情况配置
grant replication slave,replication client on . to ‘slave’@‘192.168.58.129’ identified by ‘slpass’;刷新权限
FLUSH PRIVILEGES;查看主节点状态:
show master status\G;从节点(192.168.157.2)配置:
编译/etc/my.cnf文件的[mysqld]下加入如下配置
server_id = 2 #从节点的ID号,不能和主节点的一样 relay_log = relay-log #开启中继日志 read_only = ON #只读开启,实现读写分离重启从节点mysql并配置:
service mysqld restart登陆从节点mysql
mysql -uroot -p1234#设置复制的主节点数据库,pos位置()
CHANGE MASTER TO MASTER_HOST=‘192.168.157.1’,MASTER_USER=‘slave’,MASTER_PASSWORD=‘slpass’,MASTER_LOG_FILE=‘mysql-bin.000002’,MASTER_LOG_POS=2518;上面语句参数说明:
MASTER_HOST:主库ip, MASTER_USER:上面主库配置从服务器登录的用户密码时配置的用户名 MASTER_PASSWORD: 上面主库配置从服务器登录的用户密码时配置的用户密码 MASTER_LOG_FILE:主库的数据库日志文件, 参考上面show master status\G; 得出的File 字段的值, MASTER_LOG_POS:参考上面show master status\G; 得出的Position 字段的值
开启主从复制并查看状态:
登录mysql后执行:START SLAVE; 登陆mysql后执行:show slave status\G;