您的位置:首页 > 博客中心 > 数据库 >

MySQL 主从复制----之基础

时间:2022-03-14 02:35

1 数据库服务器 一主一备,是很常见的备用模型

利用数据库主备模型的好处是:

  从服务器上面 可以做停掉 冷备份   提供高可用的功能 做一些简单的修复   异地容灾   scale out: 分摊负载  (高级特性)      主负责 写 多个从服务器负责 读   2 原理  包含的日志文件 1 bin-log 记录任何可能改变数据库操作的SQL语句 2 relay-log 中继日志  Slave 从Master得到的日志 gxlsystem.com,布布扣   简单介绍原理就是 通过Master 服务器记录的bin-log日志文件,被发送到 Slave服务器,作为Slave的中继日志(relay-log),Slave服服务器,再将这个日志作为SQL语句重新执行一遍,便改变了数据库内容,写入date中!   即: 主服务器的操作,被同步的写入了 Slave服务器,但可能会比主服务器慢。(异步模式下)   gxlsystem.com,布布扣   Master 开启一个 dump线程 Slave 开启两个线程一个  IO线程负责log读取,一个SQL线程负责从先log中的SQL语句执行     3 实验 主Master Server: 192.168.204.5 备Slave  Server:  192.168.204.6    mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz   通用格式二进制包   一 、主Master 配置 解压步骤省略......   指定数据目录  /data/mysql   chown -R mysql.mysql /data/mysql 确定存放日志的文件 mkdir /data/mysql/logs chown -R mysql.mysql /data/mysql/logs   初始化 [root@web1 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 复制配置文件和启动文件 [root@web1 mysql]# cp support-files/my-default.cnf /etc/my.cnf [root@web1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld  修改配置文件 vim /etc/my.cnf datadir = /data/mysql  启动必须的   针对Master 服务器的配置 server-id =100  必须唯一 log-bin=/data/mysql/logs/master-bin  肯定要启动bin-log日志功能 log-bin-index=/data/mysql/logs/master-bin.index   优化的配置 开启满日志查询

slow_query_log = ON
slow_query_log_file = /data/mysql/logs/master_slow.log

 

 

3、创建一个具有复制权限的用户 REPLICATION SLAVE REPLICATION CLIENT   mysql> grant replication slave on *.* to ‘repluser‘@‘192.168.204.6‘ identified by ‘replpass‘;

mysql> flush privileges;

  4 记住当前的binlog file 坐标positon

mysql> flush tables;show master status;
Query OK, 0 rows affected (0.00 sec)

+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master_bin.000003 | 488 | | | |
+-------------------+----------+-

 

二、Slave 服务器配置

1 同上初始化

[root@web2 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

2 修改vim /etc/my.cnf

datadir= /data/mysql

server-id =200
relay_log=relay_log
relay_log_index=relay_log.index

 

注: 由于Slave 只作为从服务器,不提供读写,所以不需要记录binlog 日志,节省资源

3 启动mysql,连接主服务器

/etc/init.d/mysqld start

mysql> change master to
-> master_host= ‘192.168.204.5‘, master_port=3306,master_user=‘repluser‘,master_password=‘replpass‘,master_log_file=‘master_bin.000003‘,master_log_pos=488;

 

4 让从服务器启动线程复制

mysql> start slave;

 

5 查看Slave 工作状态

show slave status\G;

 

6 测试

主服务器上

创建一个库

mysql> create database mydb;

查看从服务器上是否更新

show databases;

和查看show slave status\G; 是否一些参数已经改变

 

 

扩展知识点

1 master.info 文件

  从服务器把change master 语句所给出的参数保存在其数据目录中的一个名为master.info 的文件里记录初始复制状态,并随着复制工作的进展而刷新这个文件。

2 如何不让从服务器复制主服务的特定库

  replication-ignore-db=databesename

3 Master 和 Slave 启动了哪些线程 参与复制

   复制线程     master: dump     slave: IO_Tread,SQL_Tread     mysql> START SLAVE; 等于启动这两个线程 IO线程负责与主服务器进行通信,接收来自主服务器的信息,把接收到的数据修改命令写入从服务器的中继日志 SQL线程负责从中继日志读取出数据修改命令并执行 STOP SLAVE  START SLAVE 后面可以接 {IO_Tread|SQL_Tread}    

 

 

热门排行

今日推荐

热门手游