MySQL主从搭建与配置

MySQL主从(MySQL replication),主要用于MySQL的实时备份或者读写分离。在配置之前先做一下准备工作,配置两台MySQL服务器,如果你的机器不能同时跑两台Linux虚拟机,那么可以考虑在同一个机器上跑两个MySQL服务。

MySQL主从的原理非常简单,总结一下:

(1)每个主从仅可以设置一个主。

(2)主在执行SQL之后,记录二进制log文件(bin-log)

(3)从连接主,并获取主的bin-log,存于本地relay-log,并从上次执行的位置起执行SQL,一旦遇到错误则停止同步。

mysql主从配置replication,又叫A,B复制,保证主从数据同步

A --> change data --> bin_log -transfer --> B --> repl_log -->change data

从这几条replication原理来看,可以有这些推论:

(1)主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。

(2)如果主从的网络断开,从会在网络正常后,批量同步。

(3)如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这是个很危险的操作。所以一般情况下,非常小心的修改从上的数据。

(4)一个衍生的配置是双主,即互为主从配置,只要双方的修改不冲突,可以工作良好。

(5)如果需要多主的话,可以用环形配置,这样任何一个节点的修改都可以同步到所有节点。

(6)可以应用在读写分离的场景,用以降低单台MySQL的I/O

(7)可以是一主多从,也可以是相互主从(主主)

主MySQL(master):192.168.134.128

从MySQL(slave):192.168.134.129

1.准备工作:

(1)修改两个主机的主机名:

主:192.168.134.128

[root@master ~]# hostname master

[root@master ~]# vim /etc/sysconfig/network

hostname=master

从:192.168.134.129

[root@slave~]# hostname slave

[root@slave~]# vim /etc/sysconfig/network

hostname=slave

(2)在两台机器上编辑hosts文件:

vim /etc/hosts

都加入两行:

192.168.134.128 master

192.168.134.129 slave

(3)关闭两台机器的防火墙:

关闭SELinux:

setenforce 0

vim /etc/selinux/config

SELINUX=disabled

关闭iptables:

iptables -F

iptables-save

chkconfig iptables off

2.在主从上都安装MySQL:

主:192.168.134.128

进入源码包目录:

[root@master ~]# cd /usr/local/src

下载MySQL安装包:

[root@master src]# ls

mysql-5.1.73-linux-x86_64-glibc23.tar.gz

解压MySQL包:

[root@master src]# tar zxvf mysql-5.1.73-linux-x86_64-glibc23.tar.gz

移动并重命名安装目录:

[root@master src]# mv mysql-5.1.73-linux-x86_64-glibc23 /usr/local/mysql

查看安装目录内容:

[root@master src]# ls /usr/local/mysql/

bin      data  include         lib  mysql-test  scripts  sql-bench

COPYING  docs  INSTALL-BINARY  man  README      share    support-files

创建mysql用户,不让其登录:

[root@master src]# useradd -s /sbin/nologin mysql

进入安装目录:

[root@master src]# cd /usr/local/mysql/

拷贝配置文件到/etc目录下覆盖原来的my.cnf:

[root@master mysql]# cp support-files/my-small.cnf /etc/my.cnf

cp:是否覆盖"/etc/my.cnf"? y

拷贝启动脚本到/etc/init.d/目录下重命名为mysqld:

[root@master mysql]# cp support-files/mysql.server /etc/init.d/mysqld

编辑启动脚本:

[root@master mysql]# vim /etc/init.d/mysqld

定义basedir和datadir:

basedir=/usr/local/mysql

datadir=/data/mysql

创建数据库存放路径:

[root@master mysql]# mkdir /data/mysql

配置:

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

WARNING: The host 'master' could not be looked up with resolveip.

This probably means that your libc libraries are not 100 % compatible

with this binary MySQL version. The MySQL daemon, mysqld, should work

normally with the exception that host name resolving will not work.

This means that you should use IP addresses instead of hostnames

when specifying MySQL privileges !

Installing MySQL system tables...

170312 23:59:44 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

Filling help tables...

170312 23:59:44 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.

OK

出现两个OK表示配置成功。

启动MySQL:

[root@master mysql]# /etc/init.d/mysqld start

Starting MySQL. SUCCESS!

查看进程:

[root@master mysql]# ps aux | grep mysql

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2bbdd39ef00bfbc11227acf3be24f049.html