MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
配置主: • 安装mysql • 修改my.cnf,增加server-id=130和log_bin=xiaobo1 • 添加环境变量 Vim /root/.bash_profile PATH=$PATH:/usr/local/mysql/bin/ 生效source !$ • 修改完配置文件后,启动或者重启mysqld服务 • /etc/init.d/mysqld restart • 把mysql库备份并恢复成xiaobo库,作为测试数据 • mysqldump -uroot -pxiaobo mysql > /tmp/mysql.sql • mysql -uroot -pxiaobo -e “create database xiaobo” • mysql -uroot -pxiaobo xiaobo < /tmp/mysql.sql • 创建用作同步数据的用户 《参考修改mysql密码mysqladmin -uroot password 'xiaobo' 进入mysql mysql -uroot -pxiaobo • grant replication slave on *.* to 'repl'@10.211.55.52 identified by 'xiaobo'; • flush tables with read lock; (暂时锁住表) • show master status; • 退出 quit
配置从 • 安装mysql • 查看my.cnf,配置server-id=132,要求和主不一样 • 修改完配置文件后,启动或者重启mysqld服务 /etc/init.d/mysqld restart • 把主上xiaobo库同步到从上 [root@CentOS7_two mysql]# scp 10.211.55.51:/tmp/*sql /tmp/ • 可以先创建xiaobo库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入xiaobo库 • scp 10.211.55.51:/tmp/*sql /tmp/ • mysql -uroot -pxiaobo • create database xiaobo; • 恢复数据:将mysql.sql数据导入xiaobo数据库 • [root@CentOS7_two mysql]# mysql -uroot -pxiaobo xiaobo < /tmp/mysql.sql • mysql -uroot -pxiaobo 执行stop slave; • 主数据服务器 记住master_log_file='xiaobo1.000001',master_log_pos=653311
mysql> change master to master_host='10.211.55.51', master_user='repl', master_password='xiaobo', master_log_file='xiaobo1.000001', master_log_pos=653311;
• 注意:关闭selinux : setenfource 0 关闭firewalld systemctl stop firewalld • 开启从机:start slave; • 查看当前的状态 show slave status,有俩个yes就对! mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.211.55.51 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: xiaobo1.000002 Read_Master_Log_Pos: 653371 Relay_Log_File: CentOS7_two-relay-bin.000002 Relay_Log_Pos: 281 Relay_Master_Log_File: xiaobo1.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes • 还要到主上执行 unlock tables
回顾 从上执行mysql -uroot show slave stauts\G 看是否有 Slave_IO_Running: Yes Slave_SQL_Running: Yes 还需关注 Seconds_Behind_Master: 0 //为主从延迟的时间 Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: 主服务器上 binlog-do-db= //仅同步指定的库 binlog-ignore-db= //忽略指定库 从服务器上 replicate_do_db= replicate_ignore_db= replicate_do_table= replicate_ignore_table= replicate_wild_do_table= //如aming.%, 支持通配符% replicate_wild_ignore_table=
测试主从 主上 mysql -uroot -pxiaobo 使用xiaobo数据库: use xiaobo; select count(*) from user; truncate table user; 到从上 mysql -uroot -pxiaobo select count(*) from user; 主上继续drop table user; 从上查看user表