视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Linux下配置MySQL主从复制
2020-11-09 14:56:35 责编:小采
文档


MySQL的主从复制是自己一直想学习的一个实战经历,因为Oracle中的主从复制也是需要不少的配置选项,相比来说感觉重量级一些(数据

MySQL的主从复制是自己一直想学习的一个实战经历,因为Oracle中的主从复制也是需要不少的配置选项,相比来说感觉重量级一些(数据量也重量级)。
今天试了一下,在本地的一台Linux虚拟机上简单模拟了一把,发现还是蛮有趣的。因为也是外行,所以为了快速达到效果,自己看了一个很早的视频,结果实际操作的时候,有好几个配置参数都已经没有了。看来还是需要静下心来慢慢做,在Windows上配置了一下,因为各种各样的原因,就是没有配置出来,个人还是喜欢Linux环境下弄,今天加了把劲总算有点苗头了。
大体的步骤有几个,
创建两个操作系统用户,,加入dba组。
在master库所在用户上安装MySQL
在slave库所在的用户上安装MySQL
配置主从复制关系
启动slave检查

首先来看看原理图,估计这个图都被共享得无处不在了。可以从图中看到主从复制的基本原理就是使用binlog来完成的。这个binlog(二进制日志)可以很灵活地解析出对应的sql语句来,基本上就是在slave端做一个类似回放的工作了。不过这个过程相对持续时间很短,数据量小,事务小的情况下,完全感觉不到延时。

我们来看看怎么做吧。因为使用MySQL自己想尽量不取默认值,就没有选择rpm包安装和yum安装等方式,直接从网站上得到了Lib包。直接解压就能运行的。
对于默认的端口3306自己就指定为1550,日志路径等配置都是通过手动完成,也算能够感受到MySQL在后台处理的时候那些是必要的。
安装的过程很容易。
在glibc多的解压文件的路径,我配置了一个MYSQL_BASE的变量,通过手工命令来安装。
[mysql@oel1 mysql-advanced-5.6.23-linux-glibc2.5-i686]$ ll
total 288
-rw-r--r-- 1 mysql dba 120908 Apr 7 16:11 a.log
drwxr-xr-x 2 mysql dba 4096 Apr 5 15:41 bin
drwxr-xr-x 2 mysql dba 4096 Apr 5 15:41 docs
drwxr-xr-x 3 mysql dba 4096 Apr 5 15:41 include
-rw-r--r-- 1 mysql dba 102509 Jan 29 21:11 INSTALL-BINARY
drwxr-xr-x 3 mysql dba 4096 Apr 5 15:42 lib
-rw-r--r-- 1 mysql dba 2729 Jan 29 21:11 LICENSE.mysql
drwxr-xr-x 4 mysql dba 4096 Apr 5 15:41 man
-rw-r--r-- 1 mysql dba 1029 Apr 5 15:49 my.cnf
-rw-r--r-- 1 mysql dba 1029 Apr 14 18:56 my-new.cnf
drwxr-xr-x 10 mysql dba 4096 Apr 5 15:41 mysql-test
-rw-r--r-- 1 mysql dba 1449 Jan 29 21:11 README
drwxr-xr-x 2 mysql dba 4096 Apr 5 15:41 scripts
drwxr-xr-x 28 mysql dba 4096 Apr 5 15:42 share
drwxr-xr-x 4 mysql dba 4096 Apr 5 15:41 sql-bench
drwxr-xr-x 2 mysql dba 4096 Apr 5 15:45 support-files
配置的profile变量如下:
PATH=$PATH:$HOME/bin
export MYSQL_BASE=/u02/mysql/mysql-advanced-5.6.23-linux-glibc2.5-i686
export MYSQL_DATA=/u02/mysql/data
export PATH=$PATH:$MYSQL_BASE/bin:$MYSQL_DATA

然后运行命令安装,其实也就是初始化工作了,指定的端口是1550
$MYSQL_BASE/scripts/mysql_install_db --user=mysql --basedir=$MYSQL_BASE --datadir=$MYSQL_DATA --port=1550

然后我们启动mysql就可以了。启动的命令相对选项要多一些,我们不适用.cnf文件来配置了,纯手工方式来看看。
$MYSQL_BASE/bin/mysqld_safe --user=mysql --basedir=$MYSQL_BASE --datadir=$MYSQL_DATA --port=1550 --log-bin=mysql_oel1_bin --log-error=/u02/mysql/log/log_error.log --long_query_time=5 --slow-query-log=true --slow-query-log-file=/u02/mysql/log/slow_qeury.log --socket=/u02/mysql/mysqld_mst.sock --server-id=1 &

这样在master端就搞定了。
slave端的工作也是类似,或者如果偷懒自己也可以直接把解压包拷贝过去。如果安装初始化的时候就需要重新制定端口了,我们定位1551吧。
先不配置slave,看能不能启动。
$MYSQL_BASE/bin/mysqld_safe --user=mysql --basedir=$MYSQL_BASE --datadir=$MYSQL_DATA --port=1551 --log-bin=mysql_oel1_slv1_bin --log-error=/u02/mysqlslv1/log/log_error.log --long_query_time=5 --slow-query-log=true --slow-query-log-file=/u02/mysqlslv1/log/slow_qeury.log --socket=/u02/mysqlslv1/mysql_slv1.sock

启动之后,验证无误,我们就可以开始配置了。
主从配置相对来说还是很简单的,如果过多的规则要求,还是很容易的。
在主库我们需要配置一个用户作为复制所用。
mysql> grant replication slave on *.* to 'slaveuser'@'192.168.27.130' identified by 'slaveuser';
Query OK, 0 rows affected (0.00 sec)
这个新建用户在user中就有所体现了。
mysql> select host,user,password from user;
+----------------+-----------+-------------------------------------------+
| host | user | password |
+----------------+-----------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| oel1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | |
| ::1 | root | |
| % | test | |
| 192.168.27.130 | slaveuser | *70E850D4C4DF85267DEC80307D6CCAEC115B2F |
+----------------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)

下载本文
显示全文
专题