MySQL 主从分离
主库配置
1、/etc/my.cnf 主数据库配置
#一般已存在
server-id = 1
#需要进行复制的数据库
binlog-do-db = search
#不需要进行复制的数据库
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#生成的同步数据所需要的文件,序号从: mysql-bin.000001开始
log-bin=mysql-bin
2、重启mysql,登陆Mysql,设置从数据库所需要的权限:可以从任何机器登陆,账号/密码:slave1/ passw0rd
grant replication slave,reload,super on *.* to 'slave1'@'%' identified by 'passw0rd';
3、查看状态
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 7657 | search | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
---------------------------------------------------------------------------------------------------
从库配置
1、/etc/my.cnf 从数据库配置,由于Mysql版本从5.1.7以后开始就不支持“master-host”类似的参数,用配置文件设置主从同步时,出现:mysqld: unknown variable 'master-host=127.0.0.1' #将配置文件中的server-id该为2
server-id = 2
(可能不起作用,需要登录数据库后,使用show variables like 'server_id'; 查看。然后设置set global server_id=2;)
#需要进行同步的数据库名称
replicate-do-db = mydatabase
2、重启mysql,登陆Mysql,设置同步设置,其中syslog.000001为日志文件,master_log_pos=0为日志开始复制的位置,即:从syslog.000001的0位置同步数据,日志文件和行号根据实际情况进行处理
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to
-> master_host='110.103.8.14',master_user='slave1',master_password='passw0rd',
-> master_log_file='mysql-bin.000005',master_log_pos=7657,master_port=53306;
Query OK, 0 rows affected (0.10 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
show slave status\G; 命令易读性好一点