mysql数据备份
方案二:双主机HA部署
前提:准备两个机器master1(172.20.3.113)和master2(172.20.3.114),且分别安装了mysql,其中IP地址根据生产具体ip进行替换
一、配置my.cnf信息
配置/etc/my.cnf文件(从mysql5.7开始不会自动生成my.cnf文件,所以需要手动创建)my.cnf文件内容大致如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[mysql]
default-character-set=utf8 #设置mysql客户端默认字符集
[mysqld]
port = 3306 #可自行更改端口
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections = 500 #最大连接数
log_bin=mysql-bin
server_id = 1 #机器1设置为1,机器2设置为2
binlog_format=ROW
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 1 #机器1设置为1,机器2设置为2
slave-skip-errors = all #忽略所有复制产生的错误
gtid_mode=ON
enforce-gtid-consistency=ON
character-set-server = utf8
default-storage-engine = INNODB
lower_case_table_names = 1[mysql]代表我们使用mysql命令登录mysql数据库时的默认设置
[mysqld]代表数据库自身的默认设置
注意:机器1和机器2只有server-id不同和auto-increment-offset不同,其他必须相同。
部分配置项解释如下:
binlog_format= ROW:指定mysql的binlog日志的格式,日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改。
auto-increment-increment= 2:表示自增长字段每次递增的量,其默认值是1。它的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2。
auto-increment-offset= 2:用来设定数据库中自动增长的起点(即初始值),因为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突。
注:另外还可以在my.cnf配置文件中,添加“binlog_do_db=数据库名”配置项(可以添加多个)来指定要同步的数据库。如果配置了这个配置项,如果没添加在该配置项后面的数据库,则binlog不记录它的事件。
切换到datacanvas用户进行mysql启动服务 (建议)
1
/usr/local/mysql/support-files/mysql.server start
或者在已经创建软连接的前提下,切换到root用户,并启动mysql服务
1
service mysql restart
客户端登录
1
/usr/local/mysql/bin/mysql -uroot -p
设置可远程登录root用户
1
2GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;注意:上面的密码’123456’修改成真实的root密码
开始设置双主备份
在master1上操作
1
2
3
4
5
6
7
8
9先在master2上执行,
show master status;(获取master_log_file和master_log_pos信息)
在master1上执行
change master to master_host='172.20.3.114',master_port=3306,master_user='rt',master_password='rt123',master_log_file='mysql-bin.000003',master_log_pos=194;
start slave;
show slave status\G在master2上操作
1
2
3
4
5
6
7
8先在master1上执行,
show master status;(获取master_log_file和master_log_pos信息)
在master2上执行
change master to master_host='172.20.3.113',master_port=3306,master_user='rt',master_password='rt123',master_log_file='mysql-bin.000004',master_log_pos=194;
start slave;
show slave status\G
二、keepalived安装配置
需要在master1和master2的机器上安装keepalived服务,安装过程大致如下:
通过地址https://pkgs.org/download/keepalived下载相应的安装版本,然后解压的相关目录。
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装( make install)
1
./configure --prefix=/usr/local/keepalived
如果提示错误信息
1
2
3configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!需要安装yum install openssl openssl-devel(RedHat系统),
再次执行./configure –prefix=/usr/local/keepalived在安装目录执行
make && make install
进行编译安装keepalived配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下加载配置文件keepalived.conf
1 | ! Configuration File forkeepalived |
注意:参数priority两个服务器配置不同,其中virtual_ipaddress是虚拟ip,之后项目可通过访问 172.20.3.200:3306进行访问双主mysql机群。
上述配置中会涉及/usr/local/keepalived/kill_keepalived.sh,分别在两台服务器上编写kill_keepalived.sh脚本内容:
1 | #!/bin/bash |
然后给脚本加权限
1 | chmod +x /usr/local/keepalived/kill_keepalived.sh |
- 启动keepalived服务如果启动失败,尝试输入
1
service keepalived start
pkill -9 keepalived
,然后再尝试重启
三、访问双主mysql集群
两台机器的mysql和keepalived配置完成之后,即可在项目中,通过访问虚拟ip地址(172.20.3.200:3306)进行mysql集群的访问。