赞
踩
从来没有对学习和使用过的技术进行总结的习惯,一直白嫖别人的经验,是时候给自己做些笔记啥的了,废话不多说
1)master会将变动记录到二进制日志里面;
2)master有一个I/O线程将二进制日志发送到slave;
4)slave有一个SQL线程,按照relay日志处理slave的数据;
按照原理,我们开启mysql主从复制,我们大体需要做以下操作:
1)开启master的二进制日志
2)开启slave的二进制日志
3)将slave指向master
4)开始复制
两台服务器(分别执行安装mysql)
master 和slave 节点安装mysql(最好同一版本);
命令 如下:
sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum install mysql-server -y(安装完成)
service mysqld restart(重新启动)
mysql -uroot (登录)
mysql> set password for root@localhost = password(‘Root@123456’);(设置密码)
1)编辑mysql的配置文件,使用命令:
vim /etc/my.cnf
2)添加二进制日志配置,开启二进制(master-bin只是日志文件名称,可以自己指定)
log-bin=master-bin
server-id=1 #唯一标识符,一定要指定
3)配置slave账号授权
mysql>GRANT REPLICATION SLAVE ON . TO ‘用户名’@‘slave数据库的IP地址’ IDENTIFIED BY ‘密码’;
如 (mysql>GRANT REPLICATION SLAVE ON . TO ‘slave1’@’%’ IDENTIFIED BY ‘123456’;
)
这行命令的意思是:允许在某个IP地址的某个用户以某个密码对当前数据库的所有库和所有表进行复制操作
4)刷新或这重启mysql
mysql>flush privileges; (刷新)
service mysql restart;
5)查看以下master的状态
查看以下master的日志文件名字,以及文件所在的位置,使用命令:
show master status;
显示如下信息
±------------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±------------------±---------±-------------±-----------------±------------------+
| master-bin.000001 | 1516 | | | |
±------------------±---------±-------------±-----------------±------------------+
(需要复制 以上log 地址)
master 配置完毕
================
1)编辑mysql的配置文件,使用命令:
vim /etc/my.cnf
2)添加二进制日志配置,开启二进制(master-bin只是日志文件名称,可以自己指定)
log-bin=master-bin
server-id=2 #唯一标识符,一定要指定
mysql>CHANGE MASTER TO
>MASTER_HOST='master所在服务器的IP',
>MASTER_USER='master授权的账号',
>MASTER_PASSWORD='master授权的密码',
>MASTER_LOG_FILE='master的日志文件名', (master-bin.000001)
>MASTER_LOG_POS=master的日志所在位置; (1516不用引号)
4)开始主从复制
mysql>start slave;
5)查看运行状态
show slave status\G;
显示
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: master的IP地址
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 1516
Relay_Log_File: slave-bin.000004
Relay_Log_Pos: 1117
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes (connction 失败, YES 表示slave的日志读取线程开启)
Slave_SQL_Running: Yes( YES 表示SQL执行线程开启)
由于主从复制是基于I/O的日志,所以会存在一定延时,如果对数据一致性要求非常高的话,简单的主从复制在实际环境中会存在问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。