前言
mysql的主从复制不但可以作为数据库备份,也能实现数据库的读写分离,为以后处理高并发打下基础
废话不多说,直接上干货
分布式数据库分为主数据库(master)和从数据库(slaves)
主从复制的基本流程:
1.在master上更新的内容以二进制日志(Binary Log)的方式存在本地
2.slaves开启IO线程拿到master服务器上的二进制流文件,并存入中继日志(Relay Log)
这个工作叫做:binlog dump process
3.slaves再开启一个SQL线程来读取反序列化后的中继日志,执行其中的sql语句,达到备份数据库的效果
具体操作
1.master授权给slave‘从复制(replication slave)’权限,并指定用户名(to username),指定登录IP(@IP),设置密码(identified by password)
mysql > GRANT REPLICATION SLAVE ON *.* TO username@’192.168.0.138’ IDENTIFIED BY ‘password’;
2.查看master的file和position值,并记录,之后有用
show master status;
3.对master和slave进行配置(server_id最好是本机IP的最后几位,保证唯一性)
master
vi /etc/my.cnf
server_id=155
log-bin=mysql-bin
slave
vi /etc/my.cnf
server_id=138
log-bin=mysql-bin
relay_log= mysql-relay-bin
log_slave_updates=1
read_only=1
重启mysql
service mysqld restart
4.配置slave,使之master与同步
mysql> change master to master_host=’master的IP’,
master_user=’username’,
master_password=’password’,
master_log_file=’mysql-bin.000005’,
master_log_pos=0;
5.启动slave的同步进程:
mysql> start slave;
查看进程状态
SHOW SLAVE STATUS
6.在master上查看主从复制的状态
mysql> show processlist \G
master已存在数据
1.锁住master,防止进行写入操作
mysql> FLUSH TABLES WITH READ LOCK;
2.查看master状态,拿到file和position值
mysql> show master status;
3.将主master的数据文件(整个/opt/mysql/data目录)复制到slave,通过tar归档压缩后再传到从服务器解压
配置slave,使之master与同步时
master_log_file=’5’,
master_log_pos=;
填写刚才记录的
4。取消主数据库锁定
mysql> UNLOCK TABLES;
以上便是MySql之主从复制,谢谢阅读~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。