1、先配置主服务器的my.cnf文件,一般在mysql的data目录, 在[mysqld]后面添加如下
server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
log-bin=master-bin
log-bin-index=master-bin.index
log-bin-trust-function-creators=1//不加这项容易报This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary错误,以为mysql默认不开启函数,如果用到函数就会报这个错误。
2、在从服务器配置如下选项,然后重启从服务器的mysql
[mysqld]
server-id=2 #这里的id在所有从数据库中必须唯一
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
log-bin-trust-function-creators=1
3、在主服务器上登录mysql执行以下两条命令增加允许从服务器复制日志的账户,配置完后重启mysql
create user repl@'192.168.1.%' identified by '123456';//增加账户
grant replication slave on *.* to repl@'192.168.1.%'; //授权账户
4、必须是最高权限的root所以要指定127.0.0.1,如果没有设置127.0.0.1为最高权限登录用户必须先设置然后执行FLUSH PRIVILEGES刷新权限后在执行下面的语句
mysqldump --master-data=2 --single-transaction -uroot -p -h 127.0.0.1 --databases maps utils > node4.sql
5、将node4.sql传输到从服务器并执行以下命令将数据复制到从服务器
mysql -uroot -p -h 127.0.0.1 <node4.sql
6、从服务器连接Master并启动从同步。
change master to master_host='192.168.0.160',master_port=3306,master_user='repl',master_password='123456',master_log_file='master-bin.000001',master_log_pos=106;
start slave;
master-bin.000001 和106如果在linux上可以用more node4.sql 查看如果是在windows上可以直接打开文件查看。
7、主从同步检查,执行如下命令
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面两个都为yes则对着呢
注:这一步发现Slave_IO_Running: No错误,用tail /var/log/mysqld.log检查发现是连接网段错误,执行STOP SLAVE;停止同步,然后改正网段后重新连接master_host='192.168.1.160',master_port=3306,master_user='repl',master_password='123456',master_log_file='master-bin.000001',master_log_pos=106;然后再启动同步即可。
8、在从服务器创建只读用户,以后连接从机用只读用户防止出错
GRANT SELECT ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'slaveuser';
9、常见的主从同步参数解释
Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称
Read_Master_Log_Pos: 在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置
Relay_Log_File: SQL线程当前正在读取和执行的中继日志文件的名称
Relay_Log_Pos: 在当前的中继日志中,SQL线程已读取和执行的位置
Relay_Master_Log_File: 由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上
Slave_SQL_Running: SQL线程是否被启动
Seconds_Behind_Master: 从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。
一篇介绍主从复制的好文章:向作者学习一下https://blog.csdn.net/hao_yunfeng/article/details/82392261