前言:最近由于业务需要,需要搭建高可用和支持实时备份和恢复,本来想直接采用公司的数据库服务。无奈公司没有资源,所以就搞了几台Linux主机自己搭建啦。(里面涉及的文件、配置、脚本代码我都贴到附件了)
过程:
一 购买云主机
二 搭建Mysql数据库,首先你需要需要删除干净本机的原先数据库
---> https://jingyan.baidu.com/article/4b52d702db8a82fc5c774b92.html,当然由于有些版本自带的有mariadb(本质是mysql,只是名字不一样而已),其次也要注意下是否有mariadb,若有则卸载mariadb(其实本质也是mysql),有的话也要删除
接下来就是下载安装,这里也不详细介绍。主要是要记住,推荐用rpm方式安装啊,方便快捷(公司linux服务器访问不了外网,其他方式安装会有很多坑),我这里是安装的5.5.62版本,去mysql官网就可以下了。
-->https://blog.csdn.net/qq_24029989/article/details/79101955 ( 记得先安装devel 源、其次安装 server源、 client源)
PS:千万别百度或者csdn随便找一个文档跟着安装,这在我司的linux环境不适用 哈哈~,记住rpm不管在哪都是傻瓜式安装(这里想到了docker也是傻瓜式容器安装任何东西)
注意:
1 需要初始化好密码
2 开启防火墙3306端口
3 设置开机自动启动mysql
最基本的命令:
初始化密码:
/usr/bin/mysqladmin -u root password 'xxxx'
启动关闭数据库:
service mysql start;
service mysql stop;
service mysql restart;
开机自动启动:
chkconfig mysql on
chkconfig --list|grep mysql
开启防火墙端口(一般是打开了的)
--> https://www.cnblogs.com/uoar/p/8056174.html
数据库集群
这里开始讲主从库集群:(不想看可忽略,主从库备份底层原理主要是通过同步二进制日志的操作,相当于主数据库的所有操作都写到一个log-bin二进制日志,需要开启这个二进制日志功能。然后从库开启relay-log同步二进制日志,实时**log-bin的变化,从而保证两边的日志文件一致,最终达到数据同步)
到现在我就默认大家安装好mysql了,我已经提前在两台机子上安装好了mysql,分别是
10.243.3.114 主 10.247.2.201 从
现在讲主从配置
我的配置全部放在 /etc/my.cnf文件里
先把主的核心配置贴上来
server-id = 1 #千万不能重复 这里设置1
innodb_file_per_table=1
log-bin=mysql-bin # 开启二进制日志
log-bin-index=mysql-bin.index # 开启二进制index
binlog_format=mixed #二进制备份方式
vi/vim修改完以后保存,然后启动数据库 service mysql start;
登录数据库后,查看命令 ,看看是否开启二进制日志成功
同理 我们配置从库(额外的核心配置,必须打开relay-log)
relay-log=relay-log
relay-log-index=relay-log.index
binlog_format=mixed
server-id = 2
innodb_file_per_table=1
其次修改完配置文件还是启动数据库 service mysql start
接下来开始连接两个数据库的关系,主要分为以下四步
1 主库上需要开通一个用户,这个用户专门给从库登录上来,做权限认证
2 查看主机的二进制日志文件和pos位置
3 从库要配置主库的路径地址,用户,二进制文件,二进制文件的位置,然后连接
4 启动主从
1 回到主机linux 登录数据库 创建主从账号 grant replication slave on *.* to 'dbmysql'@'%' identified by '123456';
2 在主机上show master status;
可以看到目前是000004和pos107
3 回到从库登录数据库 连接认证
change master to master_host='10.243.3.114',master_user='dbmysql',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=107;
4 启动start slave;
SHOW SLAVE STATUS\G
这里一定要注意两边的端口是否通的,以及参数一定要注意不能错误
备份与恢复
全量定时备份 (使用crontab定时器,去写一个备份数据库的脚本,数据库有备份的命令,要注意,定时备份会锁库,造成数据库暂时不可用,需要设置成异步,需要自己去优化,我这里主要使用innodb行级锁)
具体可以参考 --> https://www.cnblogs.com/eternal1025/p/8554225.html ,仅仅只是参考哈,最后配置文件最好还是用我的改,我优化了一点点。(这里需要注意的是,你的文件一定要有权限,创建文件一定要有 chmod -R 777的习惯,否则没有读写权限,怎么定时操作文件哈哈)
实时增量备份(网上多去参考log-bin二进制备份)
具体可以参考 --> https://blog.csdn.net/nanyanglu/article/details/52671044
最后,同时为了账号安全,数据库应该分为三个等级给不同人员使用
1 root 最高权限
2 开发者权限用户 (一般没有drop表权限)
3 navicat之类的只有读权限
到这写的只是大概的思路,具体可能有非常多的细节,和命令需要注意一下的。不懂得地方去相关google和百度找一下。很多很容易采坑的地方我也说出来了~ 无论是操作方面还是原理方面,不懂得都可以过来找我交流~