MySQL的主从架构Master-Worker

4次阅读

共计 1395 个字符,预计需要花费 4 分钟才能阅读完成。

所有数据库的主从架构,主要做的都是读写分离。
数据库的主从概念,就是指的数据库存储在多台电脑上,互作备份,同时读写分离。也就相当于硬盘组合中的 RAID 1 形式。一般的设计是,写就直接写入 Master 数据库,但是读就从各个 Worker 从数据库来读取。这样的分配是因为一般的读写配比是 10: 1。
所以一般商业网站,最少要有 2 台电脑,一台 Master,一台 Worker。因为主从在同一台机器上,是完全没有意义的。

整个数据库的备份与修复:
# 备份某个数据库的所有表结构和数据
$ 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 服务器远程连接登录用:
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 restart
开启运行主从架构
以上配置完成后,实际上 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 ;

只有以上标注的两个 Yes 后,才证明同步成功。
此时如果在 Master 主机上,可以看到自己的状态:
— 查看 Master 主人的状态(自己的状态)
SHOW MASTER STATUS ;

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

正文完
 0