环境:
Master:Centos 6.3 192.168.1.4
Slave:Centos 6.3 192.168.1.5
MySQL: MySQL-5.6.25
MySQL采用rpm安装方式
安装方式参照:http://www.cnblogs.com/xs104/p/4589041.html
配置主数据库:
安装完成之后,会在/usr目录下生成一个my.cnf文件,修改配置文件并将之复制到/etc目录下
[mysqld] server-id=1 log-bin=mysqlmaster-bin.log sync_binlog=1 #注意:下面这个参数需要修改为服务器内存的70%左右 innodb_buffer_pool_size = 512M innodb_flush_log_at_trx_commit=1 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO lower_case_table_names=1 log_bin_trust_function_creators=1
重启mysql
配置从数据库:
同样修改/usr目录下的my.cnf文件,并将之复制到/etc目录下
[mysqld] server-id=2 log-bin=mysqlslave-bin.log sync_binlog=1 #注意:下面这个参数需要修改为服务器内存的70%左右 innodb_buffer_pool_size=512M innodb_flush_log_at_trx_commit=1 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO lower_case_table_names=1 log_bin_trust_function_creators=1
重启数据库
在主数据库上创建账户用于主从之间数据复制
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从数据库地址' IDENTIFIED BY '密码';
获取主数据库的的二进制日志坐标
执行:
FLUSH TABLES WITH READ LOCK;
主数据库锁表
执行:
SHOW MASTER STATUS;
会显示主数据库的二进制日志名称和位置,记录备用
主数据库解锁:
UNLOCK TABLES;
给从数据库设置复制的主数据库信息
CHANGE MASTER TO MASTER_HOST='主数据库地址',MASTER_USER='刚才创建的用户名',MASTER_PASSWORD='密码',MASTER_LOG_FILE='二进制日志名称',MASTER_LOG_POS=坐标;
启动复制线程
START slave;
接着查询数据库的slave状态:
SHOW slave STATUS G
如果Slave_IO_Running和Slave_SQL_Running均为yes,那么表示主从复制成功
遇到的问题
1.启动mysql时候,提示ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因是my.cnf里有错误,填写正确参数即可
2.slave状态找那个的Slave_IO_Running是connecting
谷歌之后,原因有三:
1、网络不通 (确定网络互通之后,可关闭防火墙,要是还不行可iptables -F(***这个慎用***))
2、密码不对 确认账户密码喽
3、pos不对 确定主库的二进制日志名称和目录