Category: Mysql数据库
-
定时全量备份 mysql 数据库并压缩
当需要全量冷备份数据库的时候,我们一般手动使用图新界面工具如:navicat,或者手动执行mysqldump备份命令,虽然这样也可以但是没有自动周期化执行,要是忘记了备份的时候突然数据库出问题恢复数据可能就不够及时和完整。我们可以利用 linux 系统自带的定时任务工具cron定时调用mysqldump命令备份数据库sql 脚本,再利用 shell 脚本调用7zip( 7zip 是压缩率最高的,测试可以压缩到十分之一大小)把 sql 脚本文件压缩成压缩包并设置一个字符串作为压缩文件的密码,然后还可以定时清理以前的老压缩文件节省空间。 说明:所有操作是在Centos系统下运行的,其它 linux 发行版可能有命令的略微差别。 1.首先需要安装 7zip 安装完成后的 7zip 程序的命令是:7za, 可以使用:7za -version查看7zip的版本。 2.编写shell脚本:mysqlBkTask.sh 保存在用户abc的用户根目录下:/home/abc/mysqlBkTask.sh。 说明:需要注意我这里mysql数据本地 root 账号访问没有密码, mydatabase为需要备份的数据库名,如果要备份所有数据库把数据库名的地方改成参数:–all-databases 3.使用系统定时任务cron来定时执行我们的备份shell脚本: 前面的 mysqlBkTask.sh文件是我们需要定时执行的脚本,假如我们需要每天凌晨 4 点 15 分执行备份任务。输入crontab -e打开编辑定时任务,我们增加以下内容: 然后按住ctrl+c后输入:wq 保存并退出。 也可以再输入: crontab -l查看任务列表,需要查看定时任务执行日志可以输入:tail -f /var/log/cron
-
mysql单台服务器启动多实例
mysql版本: mysql5.7 操作系统: Ubuntu20.4 当前登录用户:zhangsan 说明: 使用mysqld_multi实现多实例启动,这里我们分别启动在3307和3308端口(可以先用”lsof -i:3307″来查看端口是否已经被占用),存储位置在当前用户的:/home/zhangsan/mysql/db1、/home/zhangsan/mysql/db2。 当前已有一个mysql安装运行在端口3306,默认数据库保存在:/var/lib/mysql(可查看/etc/mysql/mysql.conf.d/mysqld.cnf文件中的配置)。 1.创建多实例启动的配置文件mysqlmulti.conf 首先在进入当前用户目录下创建 mysqlmulti.conf 的配置文件: 输入如下配置内容: 我们刚创建的配置文件拥有者为我们登录的用户,需要使用chown命令修改文件的拥有者为mysql用户: 2.给数据库目录增加权限 修改数据库目录权限: 修改:/etc/apparmor.d/usr.sbin.mysqld文件, 在文件末尾增加我们设置的两个保存mysql数据库文件的路径。 注意:该文件最后一行是大括号结尾,要放到括号里面。 然后使用命令来重启apparmor: 初始化数据库目录: 3.创建日志文件并授权 创建空的日志文件: 授权给mysql用户: 4.使用mysqld_multi命令启动多个实例 5.验证mysql安装、启动和停止数据 数据库启动后没有密码的,我们用空密码登录数据: 数据库 启动、停止、重启、查看状态: 使用:sudo mysqld_multi –defaults-file=/home/zhangsan/mysqlmulti.conf –no-log start | stop| reload | report 3307 | 3308 仅示范启动3307端口数据库命令: 说明:如果最后不加端口就是针对 mysqlmulti.conf 配置文件中所有数据库批量做操作。
-
MySql配置主从同步
本次使用mysql5.7版本,两台服务器均在公网。其中一台是线上生产环境,每次全量备份sql文件和费时和重复。那我们把线上生产环境的数据库设置成主库,线下本地数据库设置成从库,那么就只需要利用mysql的主从同步来做增量更新了,然后本地数据库再利用mysqldump备份sql文件并压缩成tar.gz文件存储到磁盘或者nas上就效率很高了。 这里我们假设 主库为: 主机地址:29.22.33.44 mysql端口:3306 从库: 主机地址:29.22.33.45 mysql端口:3306 注意:必须要现在主库上开启binlong,然后创建一个从库访问的账号,最后主库需要锁数据库(禁止新的数据写入)!!! 一.在主库中配置步骤如下: 1.配置my.cnf配置文件,使其启用bin-log日志文件: 首先关闭mysql数据库 如果是CentOs系统: 如果是Ubuntu系统: 然后编辑mysql的配置文件my.cnf在mysqld中增加如下内容(CentOs默认在/etc/my.cn,Ubuntu默认在/etc/mysql/mysql.conf.d/mysqld.cnf): 2.配置用来给从库远程访问的账号: 注意这里要先启动mysql数据库: 如果是CentOs系统: 如果是Ubuntu系统: 登录mysql数据库(执行:mysql -uroot -p,然后输入密码)操作如下: 说明:如果从库的ip地址固定,可以把%修改成ip地址。 3.锁住数据库的写操作: 4.获取二进制日志的信息: 5.把当前数据库中已有数据全部备份出来到一个压缩文件(方便下载到本地数据库导入): 说明:/var/lib/mysql/mysql.sock这个请到my.cnf文件中查看具体路径,不同linux系统有不同。 注意:第4步的mysql登录会话不要关闭,我们这里新开一个会话来导出sql(不然前面的binlog position会失效) 此处的root为账号,-p后面单引号中的为对应账号密码。 备份文件将保存在:/home/abc/backup/文件夹下, 请提前用命令:mkdir /home/abc/backup/ 创建好。 2.在从库中配置如下: 1.mysql的配置文件my.cnf在mysqld中增加如下内容(CentOs默认在/etc/my.cn,Ubuntu默认在/etc/mysql/mysql.conf.d/mysqld.cnf): 2.重启mysql数据库: 如果是CentOs系统: 如果是Ubuntu系统: 3.导入主库备份的sql脚本(从主库下载的备份sql文件是压缩的tar.gz压缩文件,需要先解压): 说明:/var/lib/mysql/mysql.sock这个请到my.cnf文件中查看具体路径,不同linux系统有不同。 mysql -uroot -p’123456′ -S /var/lib/mysql/mysql.sock < /Users/zhangsan/Downloads/mysql_bak.2022-10-14.sql 4.配置主库连接信息: 使用mysql -uroot -p,然后输入密码登录数据库然后执行如下指令: 说明:MASTER_HOST 值是主库ip地址,MASTER_USER是我们在主库上给从库分配的远程访问账号,MASTER_PASSWORD是对应密码,MASTER_LOG_FILE就是主库上的二进制日志文件名,MASTER_LOG_POS是标记位置。 5.启动同步:…
-
CentOS7 64位下MySQL5.7安装与配置
1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ 或者直接在服务器上用wget下载rpm安装包 2安装mysql源 3检查mysql源是否安装成功 可以修改vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。 4安装MySQL 5启动MySQL服务 然后输入如下命令查看服务状态 6配置开机启动 7修改root账号本地登录密码 mysql安装完成之后,在/var/log/mysqld.log文件中生成了一个root账号的默认密码。可通过以下命令查看这个密码: 8自定义root账号密码 或者 然后输入如下命令即使生效以上操作: