9

前言

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


大叔一枝花
610 声望56 粉丝

Talk is cheap,show me the code