共计 4387 个字符,预计需要花费 11 分钟才能阅读完成。
一、MySQL 主从备份
为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在主服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当主服务器的 mysql 挂掉之后,数据也不会丢失,同时也提高了数据库的效率。
1. 环境
master 192.168.174.129
slave 192.168.174.130
master 和 slave 的防火墙都为关闭状态,selinux 也为 disabled,不然会出错,selinux 设置重启生效。
2. 在 master 和 slave 上安装 mysql 和 mysql-server
注:mysql master 数据库版本和 slave 数据库版本要相同,或者 slave 版本比 master 高
mysql 安装可以 yum 安装也可以源码安装,本文采用 yum 安装
yum -y install mysql mysql-server
在主服务器和从服务器上打开 mysql 服务,并设置开机自启
service mysqld restart
chkconfig mysqld on
3.mysql mater 配置
打开 mysql 配置文件 /etc/my.cnf,在 mysqld 下添加
log-bin=mysql-bin ——— 启动二进制日志系统
binlog-do-db=test ——— 要同步的数据库
server-id=1 ——— 服务 id,主服务器 server-id 比从服务器 server-id 小
binlog-ignore-db=mysql —— 避免同步 mysql 用户配置
重启 mysql
service mysqld restart
进入数据库 mysql
mysql -u root -p
初始状态 mysql 默认没有密码,如果要设置密码可以使用 mysqladmin -u root -p “password”,设置密码,这样也会更安全一些
创建一个同步账号,并赋予权限
查看 master 的状态信息,记录下 file 和 position 的值,在后边的 slave 配置中会用到
4.mysql slave 配置
打开 mysql 配置文件 /etc/my.cnf,在 mysqld 下添加
server-id=2 ——– 服务 id,从服务器 server-id 比主服务器 server-id 大
replication-ignore-db=mysql — 屏蔽对 mysql 库的同步
replication-do-db=test ——— 要同步的数据库名,与主服务器配置保持一致
master-connect-retry=60 ——– 断点重连时间
master-host=192.168.174.129
master-user=test
master-password=test
master-port=3306
进入 mysql
mysql -u root -p
停止 slave 服务:stop slave;
配置 slave 同步,完成后开启 slave 服务
change master to master_host=’192.168.174.129′,master_user=’test’,master_password=’test’,master_log_file=’mysql-bin.000026′,master_log_pos=346;
这里的 master_log_file 和 master_log_pos 要和前面记录的 file 和 position 一致
查看 slave 状态
show slave status\G;
当两个 running 都为 yes 时即配置成功,可以在主服务上对 test 数据库操作,看是否这些操作会同步到从服务器上
二、MySQL 主主备份
主主备份的设置就是将从服务器上的设置在主服务器上操作一遍,主服务器上的操作在从服务器上操作一遍,这里就不再赘述
三、MySQL+Keepalived
环境:
keepalived 主机:192.168.174.129
keepalived 备机:192.168.174.130
VIP:192.168.174.222
测试主机:192.168.174.133
master、slave、keepalived 主机、keepalived 备机、测试主机的防火墙都为关闭状态,selinux 也为 disabled,不然会出错,selinux 设置重启生效。
1.keepalived
keepalived 可以监控服务状态,当主服务宕机后可以将服务自动漂移至从服务,利用 keepalived+mysql 可以实现 mysql 的高可用性,当 mysql 主服务器宕机后,从服务器接管主服务器的工作,保证对外服务,keepalived 还可以实现虚拟 ip 对外服务,保证内部服务器安全,同时 keepalived 的主从机制也保证了服务的高可用性
2.keepalived 安装
这里和前边博文中 keepalived 安装步骤基本一样,主要是配置文件不一样,博主为熟悉 keepalived 安装又啰嗦了一遍,下载 keepalived 源码安装包,解压
进入 keepalived 解压目录,执行
./configure –prefix=/usr/local/keepalived
拷贝 keepalived 启动文件到 /etc/init.d 下,这样 keepalived 服务才能为系统识别
cp /root/package/keepalived-1.4.5/keepalived/etc/init.d /etc/init.d
执行
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin
新建文件夹 keepalived
mkdir /etc/keepalived
将 keepalived 的配置文件拷贝过来,keepalived 启动时会从 /etc/keepalived 目录下查找 keepalived.conf 配置文件,如果没有找到则使用默认的配置。
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
以上操作在 keepalived 主机和备机上都执行
修改主机配置文件
修改备机配置文件
主机和备机配置文件只有 router_id 和 vrrp_instance 的 state 和 priority 不同
开启主机和备机的 keepalived 服务
service keepalived start
在测试机上 ping 虚拟 IP192.168.174.222,成功,而且我的内网内 192.168.174.222 的 ip
使用虚拟 IP192.168.174.222 连接 3306 端口的 mysql 服务,连接之前需要在 mysql 主服务和 mysql 从服务器为测试机 ip 赋予权限
使用虚拟 IP192.168.174.222 连接 3306 端口的 mysql 服务,使用授权的用户和密码,成功
查看当前数据库
查看 mysql 从服务器数据库可知连接的应该是从数据库
停止 mysql 从服务器服务:service mysqld stop, 再次在测试机连接虚拟 IP192.168.174.222 连接 3306 端口的 mysql 服务, 成功
也可以查出数据库
keepalived+mysql 主从同步成功
四、MySQL 读写分离
mysql 读写分离是在 mysql 主从同步的基础上做的,mysql 主服务器负责写,多台 mysql 从服务器负责读,mysql 主从同步仅仅是把 mysql 主服务器的数据库同步到了 mysql 从服务器上,如果要实现读写分离,还需要一个服务器去协调。这个服务就是 mysql-proxy。
1. 环境配置
mysql 主服务器:192.168.174.129
mysql 从服务器:192.168.174.130
mysql-proxy 服务器:192.168.174.131
master、slave 以及 mysql-proxy 服务器的防火墙都为关闭状态,selinux 也为 disabled,不然会出错,selinux 设置重启生效。
2.mysql-proxy 安装
mysql 的读写分离是靠过 rw-splitting.lua 脚本实现的,因此需要安装 lua。
安装之前先安装包依赖
yum -y install gcc* gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt libtool* flex* pkgconfig* libevent* glib*
wget 下载 lua,很小,很快就能下载完成,解压
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
进入 lua 解压后目录,执行
make linux
make && make install
export LUA_CFLAGS=”-I/usr/local/include” LUA_LIBS=”-L/usr/local/lib -llua -ldl” LDFLAGS=”-lm”
下载 mysql-proxy,解压
执行
mkdir /usr/local/mysql-proxy
cp * /usr/local/mysql-proxy
cd /usr/local/mysql-proxy
修改 rw-splitting.lua 文件
修改连接数,默认为 4,即只有当有四台 mysql 服务器时才启用读写分离,为了试验成功,改为 1
vim /usr/local/mysql-proxy/rw-splitting.lua
启动 msyql-proxy
cd /usr/local/mysql-proxy/bin
./mysql-proxy –proxy-read-only-backend-addresses=192.168.174.130:3306 –proxy-backend-addresses=192.168.174.129:3306 –proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &
参数说明:
–proxy-read-only-backend-addresses ——— 只读服务器 ip 地址
–proxy-backend-addresses ———————- 服务器地址(mysql 主服务器)
–proxy-lua-script —————————-lua 脚本路径
& —————————————————– 表示后台执行
mysql 主从备份 +mysql 读写分离配置完成。
: