在每台服务器上都创建复制用户账号,并授权:用户:test 密码:test1
# 创建用户create user 'test'@'10.16.1.118' identified by 'test1';# 授权,只授予复制和客户端访问权限grant replication slave on *.* to 'test'@'10.16.1.119';#分配权限
为什么每台服务器都创建复制账号呢?用于监控和管理复制账号的权限,主库账号用于从库连接并进行日志复制使用,而从库账号,用于当主库宕机时,把从库切换为主库时,自身所需的配置 。
配置主库与从库
找到主数据库的配置文件my.cnf,默认在 /etc/my.cnf
vi /etc/my.cnf在[mysqld]部分插入
[mysqld]log-bin=mysql-bin #开启二进制日志server-id=1 #设置server-id,必须唯一配置说明
log-bin:设置二进制日志文件的基本名;log-bin-index:设置二进制日志索引文件名;binlog_format:控制二进制日志格式,进而控制了复制类型,三个可选值? -STATEMENT:语句复制,默认选项? -ROW:行复制? -MIXED:混和复制server-id:服务器设置唯一ID,默认为1,推荐取IP最后部分;sync-binlog:默认为0,为保证不会丢失数据,需设置为1,用于强制每次提交事务时,同步二进制日志到磁盘上 。打开mysql会话shell
mysql -uroot -p查看master状态
记录二进制文件名(mysql-bin.000013)和位置(8369):
mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000013 | 8369 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)【MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻】配置从库Slave
找到从数据库的配置文件my.cnf,默认在/etc/my.cnf
vi /etc/my.cnf在[mysqld]部分插入
[mysqld]server-id=2 #设置server-id,必须唯一relay-log=/var/lib/mysql/mysql-relay-bin #指定中继日志的位置和命名启动主从复制
重启从mysql,打开从mysql会话,在从数据库上执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
mysql> CHANGE MASTER TO -> MASTER_HOST='10.16.1.118 ', -> MASTER_USER='test', -> MASTER_PASSword='test1', -> MASTER_LOG_FILE='mysql-bin.000013', -> MASTER_LOG_POS=8369;Query OK, 0 rows affected, 2 warnings (0.02 sec)启动slave同步进程
mysql>start slave;查看slave状态
mysql> show slave statusG*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.16.1.118 Master_User: test Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-relay-bin.000002 Read_Master_Log_Pos: 8369 Relay_Log_File:relay-bin.000002 Relay_Log_Pos: 640 Relay_Master_Log_File: mysql-bin.000013 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB:Replicate_Ignore_DB:......当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了 。
测试:
- 主数据库
- 从服务器
架构原理对我们的启发上面针对于原理上的解析,但是这个东西使用的模式设计,我们从中可以的得到什么启发?并运用自己的业务系统中,这个是我们学习的另一个重点 。作为暖男的我,岂能不帮助大家呢?
这种主从的复制架构实现了日志获取和数据重放的解耦,允许这两个过程是异步进行处理的,也就是l/O线程能够独立于SQL线程之外点的工作 。
推荐阅读
- Mysql报too many connections详解
- Mysql访问中间件--Atlas初探
- Centos7 安装redis主从及配置哨兵模式
- Linux怎么复制文件到其他文件夹
- 我常用的免费MySQL图形化管理工具
- Linux安装JDK 以及 tomcat 和mysql
- MySQL-分布式架构-MyCAT
- MySQL中七个查询命令的优先级及特点
- 千万级MySQL数据库建立索引,提高性能的秘诀
- Docker下搭建Apache+PHP+Mysql