mysql 主从同步

 1、mysql主从复制介绍

       mysql 服务器之间的复制是基于二进制日志机制的。在主服务器上开启二进制日志,当mysql实例进行写操作时会同时生成一条操作事件日志并写入二进制日志文件中,而从服务器则负责读取主服务器上的二进制日志,并在从服务器上重新执行该事件,从而实现复制数据。

       从库生成两个线程,一个I/O线程,一个SQL线程;I/O线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

        

 

        

 

2、主从形式

3、主从复制实战

环境:centos 6.5  192.168.2.11(主)
    centos 6.5  192.168.2.22(从)

1、关闭iptables
[root@mysql01 yum.repos.d]# service iptables stop
[root@mysql01 yum.repos.d]# chkconfig iptables off

2、在两台机器安装mysql(一样的操作)
[root@mysql01 yum.repos.d]# yum install -y mysql mysql-server
[root@mysql01 yum.repos.d]# service mysqld start
[root@mysql01 yum.repos.d]# chkconfig mysqld on
[root@mysql01 yum.repos.d]# mysqladmin -uroot password '00000000'

3、在mysql01上创建数据库test01,并在上面创建student表
[root@mysql01 yum.repos.d]# mysql -uroot -p
mysql> create database test01;
mysql> use test01;
mysql> create table student(name varchar(10),id int(4));
mysql> insert into student(name,id)values('long01',1);
mysql> insert into student(name,id)values('long02',2);
mysql> exit

4、在mysql01编辑my.cnf文件
[root@mysql01 yum.repos.d]# vi /etc/my.cnf
[mysqld]
log-bin=long-bin
#启用二进制日志
server-id=101
#设置服务器编号,不能重复
binlog-do-db=test01,test02
#binlog-ignore-db=test01,test02
#这两个参数分别的作用是需要复制的库和定义不需要复制的库,用其一即可
[root@mysql01 yum.repos.d]# service mysqld restart

5、在mysql02设置服务器编号(不能和mysql01一样)
[root@mysql02 ~]# vi /etc/my.cnf
[mysqld]
server-id=102
binlog-do-db=test01,test02
#binlog-ignore-db=test01
[root@mysql01 yum.repos.d]# service mysqld restart

6、在mysql01上创建复制账号
[root@mysql01 yum.repos.d]# mysql -uroot -p
mysql> create user 'slave_cp'@'%' identified by '00000000';
mysql> grant replication slave on *.* to 'slave_cp'@'%';
mysql> exit

7、获取mysql01二进制日志信息
[root@mysql01 yum.repos.d]# mysql -uroot -p
mysql> flush tables with read lock;
#锁定数据库的写操作,作用是对所用的表执行只读锁定,写的操作会被拒绝,防止在查看二进制日志时有人对数据进行修改
mysql> show master status;
mysql> unlock tables;
#对全局锁执行结束操作
mysql> exit

8、对mysql01现有的数据库进行备份,并导入mysql02
[root@mysql01 yum.repos.d]# mysqldump -uroot -p00000000 test01 >/tmp/long.sql
[root@mysql01 yum.repos.d]# scp /tmp/long.sql 192.168.2.22:/tmp/
[root@mysql02 ~]# mysql -uroot -p
mysql> create database test01;
[root@mysql02 ~]# mysql -uroot -p00000000 test01 </tmp/long.sql

9、配置从服务器mysql02连接主服务器mysql01进行数据复制
[root@mysql02 ~]# mysql -uroot -p
mysql> change master to
-> master_host='192.168.2.11',
-> master_user='slave_cp',
-> master_password='00000000',
-> master_log_file='long-bin.000001',
->master_log_pos=339;
mysql> start slave;
mysql> show slave status\G;
 
10、数据同步验证(在mysql01上创建新的数据库和在数据库test01上的表student加入新的数据)
[root@mysql01 yum.repos.d]# mysql -uroot -p
mysql> create database test02;
mysql> use test01;
mysql> insert into student values('long03',3);

[root@mysql02 ~]# mysql -uroot -p
mysql> show databases;
 
mysql> select * from student;
 
#如果slave上写了数据,主从复制会被破坏。重启master,得先关闭slave(slave stop),然后
重启master 的mysql 服务,slave 也重新start slave。

 

转载于:https://www.cnblogs.com/derrickrose/p/9514606.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值