原理:MySQL主将操作记录到binlog,从将主的binlog同步到relaylog,从执行relaylog中记录的语句。
1、配置:
主配置:
# vim /etc/my.cnf
写入log_bin = liunx1
# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
# ll /data/mysql/
# mysqldump -uroot -p mysql > /tmp/mysql.sql
# mysql uroot -p -e "create database kei"
# mysql uroot -p kei < /tmp/mysql.sql
进入MySQL# mysql -uroot -p
mysql> grant replication slave on *.* to 'root'@192.168.43.28 identified by 'wxt520';
//创建作为同步数据的用户并赋予权限
mysql> flush tables with read lock;
//将表锁住,保持表内数据不变
mysql> show master status;
//显示主状态
退出MySQLmysql> quit
从配置:
在主中将文件拷贝到从:
# scp /tmp/mysql.sql root@192.168.43.28:/tmp/
主:
# ll /tmp/mysql.sql
-rw-r--r--. 1 root root 699065 3月 12 08:27 /tmp/mysql.sql
从:
# ll /tmp/mysql.sql
-rw-r--r--. 1 root root 699065 3月 12 08:53 /tmp/mysql.sql
//大小一致
# mysql -uroot -e "create database kei"
# mysql -uroot kei < /tmp/mysql.sql
进入MySQL# mysql -uroot
mysql> stop slave;
mysql> change master tomaster_host='192.168.43.134',master_user='root',master_password='wxt520',master_log_file='linux1.000001',master_log_pos=699278;
mysql> start slave;
mysql> show slave status\G;
在主上解锁表:mysql> unlock tables;
主从测试:
从:
mysql> show slave status\G;
主、从:
mysql> use kei;
mysql> show tables;
mysql> select count(*) from db;
主:
mysql> truncate table db;
主、从:
mysql> select count(*) from db;
配置参数:
主:
binlog-do-db=skate_db
//只记录指定数据库的更新到二进制日志中
binlog-ignore-db=skate_db
//忽略指定数据库的更新到二进制日志中
从:
replicate-do-db
//只复制指定db
replicate-ingore-db
//忽略指定表
replicate_wild_do_table=skatedb.%
//模糊匹配复制指定db