MySQL的主从架构Master-Worker

全部数据库的主从架构,主要作的都是 读写分离

数据库的主从概念,就是指的数据库存储在多台电脑上,互做备份,同时读写分离。也就至关于硬盘组合中的RAID 1形式。
通常的设计是,写就直接写入Master数据库,可是读就从各个Worker从数据库来读取。这样的分配是由于通常的读写配比是10: 1。mysql

因此通常商业网站,最少要有2台电脑,一台Master,一台Worker。由于主从在同一台机器上,是彻底没有意义的。sql

image

整个数据库的备份与修复:shell

# 备份某个数据库的全部表结构和数据
$ mysqldump -u root -p "password123" 数据库名 > backup.sql

# 备份整个服务器的全部数据库和数据
$ mysqldump -u root -p "password123" --all-databases --lock-all-tables > master_db.sql

# 修复(导入)备份的数据库:
$ mysql -u root -p "password123" 数据库名 < backup.sql

主从的配置

前提条件:数据库

  • 两台电脑都具有彻底相同的数据(须要备份和导入)

Master电脑和Worker电脑,分别都有一个一样的配置文件/etc/mysql/my.cnf
注意:MySQL的主从设置,在配置文件里是没有说明的。须要在MySQL的shell里输入命令来指明。服务器

Master配置

Master须要在mysql.cnf中配置如下几个选项:架构

server-id = 123    #  为本机设置的服务器ID,能够是任意整数,但不能和其它主机重复
log_bin = /var/log/mysql/mysql-bin.log  # 日志文件

重启服务器:$ sudo service mysql restart网站

而后在Master的MySQL服务中,建立专属的帐号,做为Worker服务器远程链接登陆用:spa

GRANT REPLICATION SLAVE ON *.* TO worker1@'%' IDENTIFIED BY 'password123' ;
FLUSH PRIVILEGES ;

Worker配置

一样是修改/etc/mysql/my.cnf:设计

server-id = 234    # 为本机设置的服务器ID,能够是任意整数,但不能和其它主机重复
log_bin = /var/log/mysql/mysql-bin.log

重启服务器:$ sudo service mysql restartrest

开启运行主从架构

以上配置完成后,实际上MySQL是分不出谁是主谁是从的。须要在每一个Worker服务器的MySQL的shell里来指明本身的主人是谁:

-- 指明主人是谁,以及链接方式
CHANGE MASTER TO master_host='192.168.1.101', 
    master_user='worker1', master_password='password123', 
    master_log_file='mysql-bin.000006', master_log_pos=590 ;

-- 开始链接
START SLAVE ;

-- 查看Worker从属的状态 (本身的状态)
SHOW SLAVE STATUS \G ;

image

只有以上标注的两个Yes后,才证实同步成功。

此时若是在Master主机上,能够看到本身的状态:

-- 查看Master主人的状态 (本身的状态)
SHOW MASTER STATUS ;

image

此时,任何在Master主机上的修改,马上就会同步更新到Worker从服务器。

相关文章
相关标签/搜索