开发者社区> 科技小先锋> 正文

MySQL主从同步配置详解

简介:
+关注继续查看

 环境:

系统:CentOS Linux release 6.0 .x86_64

软件: mysql.5.1.X

Master IP 192.168.200.1

Slave IP 192.168.200.2

mysql安装请参照 mysql单实例安装  


MYSQL主从同步的作用

(1) 数据分布

(2) 负载平衡(load balancing)

(3) 备份

(4) 高可用性(high availability)和容错

MYSQL主从同步的原理

关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同步的原理,通过下图能很明白的指导其工作的过程:

 

配置:

一、Master的配置

1、在/etc/my.cnf里添加如下内容:

1
2
3
4
5
6
7
8
9
server-id = 1 
sync_binlog=1 
auto_increment_increment=2 
auto_increment_offset=1 
log-slave-updates 
log-bin=mysql-bin  
binlog-ignore-db=mysql
character-set-server=utf8
init_connect='SET NAMES utf8'

设定了默认字符集为utf8,可以按实际情况取舍这段配置。


2、在Mster 上建立同步账号

1
GRANT REPLICATION SLAVE,FILE ON *.* TO 'backup'@'192.168.200.2' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;



二、Slave 的配置,在/etc/my.cnf里添加如下内容:

1
server-id = 2 sync_binlog=1 auto_increment_increment=1 auto_increment_offset=1 log-slave-updates log-bin=mysql-bin binlog-ignore-db=mysql master-host = 192.168.200.2 master-user = backup master-password = 123456 master-port = 3306


三、重启Master和slaved服务器mysql服务。


四、Slave服务器从主服务器读取数据,并开启同步

1、

1
2
FLUSH TABLES WITH READ LOCK; #首先执行这个对主服务器进行加锁 
LOAD DATA FROM MASTER  #语句的话,必须授予全局的 FILE 和 SELECT 权限,仅针对MyISAM引擎,对InnoDB表无用。


2、如果数据是InnoDB的,需要在服务器上将表结构和数据分开导出,然后拷贝至Slave服务器。 

1
2
3
4
导出整个数据库结构和数据:mysqldump -u用户名 -p密码 -h主机 database > filename.sql 
导出某个表的数据和结构:mysqldump -u用户名 -p密码 -h主机 database table > filename.sql 
只导出数据库中表的数据:mysqldump -u用户名 -p密码 -h主机 -T database table > filename.sql 
只导出数据库中表的结构:mysqldump -u用户名 -p密码 -h主机 -d database table > filename.sql


3、在Master服务器上查看master的状态

1
2
3
4
5
6
7
mysql> show master status; 
+------------------+----------+--------------+------------------+ 
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+--------------+------------------+ 
| mysql-bin.000011 |      106 | db_cngamer   |   mysql               | 
+------------------+----------+--------------+------------------+ 
1 row in set (0.00 sec)

可以看到日志文件是:mysql-bin.000011,同步点是106


4、在Slave服务器上执行如下语句

1
2
3
4
5
mysql> CHANGE MASTER TO MASTER_HOST='192.168.11.244',MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000011',MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.01 sec)
 
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)


5、在slave上查看同步状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> show slave status\G  
*************************** 1. row *************************** 
             Slave_IO_State: Queueing master event to the relay log 
                Master_Host: 192.168.200.1 
                Master_User: backup 
                Master_Port: 3306 
              Connect_Retry: 60 
            Master_Log_File: mysql-bin.000011 
        Read_Master_Log_Pos: 106 
             Relay_Log_File: mysqld-relay-bin.000010 
              Relay_Log_Pos: 106 
      Relay_Master_Log_File: mysql-bin.000011 
           Slave_IO_Running: Yes 
          Slave_SQL_Running: Yes 
            Replicate_Do_DB: typecho 
        Replicate_Ignore_DB: mysql,test 
         Replicate_Do_Table:  
     Replicate_Ignore_Table:  
    Replicate_Wild_Do_Table:  
Replicate_Wild_Ignore_Table:  
                 Last_Errno: 0 
                 Last_Error:  
               Skip_Counter: 0 
        Exec_Master_Log_Pos: 106 
            Relay_Log_Space: 106 
            Until_Condition: None 
             Until_Log_File:  
              Until_Log_Pos: 0 
         Master_SSL_Allowed: No 
         Master_SSL_CA_File:  
         Master_SSL_CA_Path:  
            Master_SSL_Cert:  
          Master_SSL_Cipher:  
             Master_SSL_Key:  
      Seconds_Behind_Master: 0 
1 row in set (0.00 sec)

可以看到,Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",这表明 Slave 的 I/O 和 SQL 线程都在正常运行。


6、配置完成



本文转自1594cqb 51CTO博客,原文链接:http://blog.51cto.com/wolfchen/1108507,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Rsync远程同步配置
# rsync服务端配置 # 安装rsync软件包 yum -y install rsync # 生成rsyncd.
731 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23523 0
mysql配置完半同步复制之后报错[ERROR] The server quit without updating PID file
修改配置,MySQL启动报:[ERROR] The server quit without updating PID file     [root@localhost mysql]# /etc/init.
1632 0
mysql 主从复制-配置文件说明
mysql 主从复制-配置文件说明
93 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
19980 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27723 0
6965
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载