您好,欢迎访问一九零五行业门户网

Linux下配置MySQL主从复制

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 | *7890e850d4c4df85267dec80307d6ccaec115b2f |
 +----------------+-----------+-------------------------------------------+
 6 rows in set (0.00 sec)
其它类似信息

推荐信息