MySQL主从复制(Centos6.3&MySQL5.6)

环境

  • Master:Centos 6.3 192.168.1.4
  • Slave:Centos 6.3 192.168.1.5
  • MySQL: MySQL-5.6.25

MySQL采用rpm安装方式

http://li-xyz.com/rpmfang-shi-an-zhuang-mysql5-6/

配置主数据库

安装完成之后,会在/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,那么表示主从复制成功

遇到的问题

  • 启动mysql时候,提示ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

原因是my.cnf里有错误,填写正确参数即可

  • slave状态找那个的Slave_IO_Running是connecting
    谷歌之后,原因有三:    
    • 网络不通(确定网络互通之后,可关闭防火墙,要是还不行可iptables -F(这个慎用))
    • 密码不对  确认账户密码喽
    • pos不对  确定主库的二进制日志名称和目录
Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1