概念mysql
主从原理:linux
场景:sql
MySQL启动异常,查看日志数据库
cd /data/mysql less 主机名.err ...[ERROR]...Permission denied ... ...[ERROR]...read-write mode
A机器做为主,IP为10.1.1.8服务器
第一步,开启主(binlog)less
[root@axiang-02 ~]# vi /etc/my.cnf, [mysqld]下增长 server-id=8 log_bin=axianglinux1 [root@axiang-02 ~]# /etc/init.d/mysqld restart //重启 [root@axiang-02 ~]# cd /data/mysql [root@axiang-02 mysql]# ls -lt 总用量 176184 -rw-rw---- 1 mysql mysql 22 8月 30 15:01 axianglinux1.index binlog索引,主从根本 -rw-rw---- 1 mysql mysql 120 8月 30 15:01 axianglinux1.000001 第一个二进制binlog文件
第二步:准备库和同步用户ide
参照blog库制做axiang用于测试测试
[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux blog > /tmp/blog.sql [root@axiang-02 mysql]# mysql -uroot -paxianglinux -e "create database axiang" [root@axiang-02 mysql]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql [root@axiang-02 mysql]# ls -lt 总用量 176184 -rw-rw---- 1 mysql mysql 220 8月 30 15:08 axianglinux1.000001 drwx------ 2 mysql mysql 20 8月 30 15:08 axiang
建立用做同步数据的用户线程
[root@axiang-02 mysql]# mysql -uroot -paxianglinux mysql> grant replication slave on *.* to 'repl'@'10.1.1.9' identified by 'axianglinux';
第三步,锁表并查看主信息rest
mysql> flush tables with read lock; 锁表 mysql> show master status; +---------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------------+----------+--------------+------------------+-------------------+ | axianglinux1.000001 | 425 | | | | +---------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
第四步,作给B起始数据
[root@axiang-02 mysql]# mysqldump -uroot -paxianglinux cms > /tmp/cms.sql
B机器做为从,IP为10.1.1.9
第一步,加入ID
[root@axiang-03 ~]# vi /etc/my.cnf [mysqld]下加入 server-id=9 //不须要binlog,id不能与主同样,建议写IP末位
第二步,同步起始数据数据
[root@axiang-03 ~]# scp 10.1.1.8:/tmp/*.sql /tmp/ //远程复制过来 [root@axiang-03 ~]# mysql -uroot -paxianglinux mysql> create database cms; mysql> create database axiang; mysql> create database blog; [root@axiang-03 ~]# mysql -uroot -paxianglinux blog < /tmp/blog.sql [root@axiang-03 ~]# mysql -uroot -paxianglinux axiang < /tmp/blog.sql [root@axiang-03 ~]# mysql -uroot -paxianglinux cms < /tmp/cms.sql
第三步开启从
[root@axiang-03 ~]# mysql -uroot -paxianglinux mysql> stop slave; mysql> change master to master_host='10.1.1.8', master_user='repl', master_passwoord='axianglinux', master_log_file='axianglinux1.000001', master_log_pos=425; mysql> start slave; mysql> show slave status\G
指定主从范围
主服务器上 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=
测试结论
show master status
重新连接