MySql之主从复制

前言

mysql的主从复制不但能够做为数据库备份,也能实现数据库的读写分离,为之后处理高并发打下基础
废话很少说,直接上干货mysql

分布式数据库分为主数据库(master)和从数据库(slaves)sql

主从复制的基本流程:数据库

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)ide

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的最后几位,保证惟一性)线程

masterrest

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之主从复制,谢谢阅读~