mysql主从复制过程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值