mysql数据库

percona-xtrabackup实现数据库完全,增量的备份和还原(含一些版本问题与坑)

断了今生、忘了曾经 提交于 2020-03-20 07:24:03
注意:版本变化 xtrabackup版本升级到2.4后,相比之前的2.1有了比较大的变化: innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary程序,另外为了兼容考虑,innobackupex作为 xtrabackup 的软链接,即xtrabacku现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除,建议通过xtrabackup替换innobackupex 这里mariadb5.5,为centos7默认版本,更高版有很多版本问题很严重 个人测试数据库版本10以上均无法使用xtrabackup 本次使用数据库5.5版本恢复主机10.4版本可行 首先安装xtrabackup yum install percona-xtrabackup 在EPEL源中 >最新版本下载安装: https://www.percona.com/downloads/XtraBackup/LATEST/ >本次实验使用 2.4 版本 下载地址: https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ yum install /root/percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm #用yum解决依赖性 使用方法 :备份 备份

MySQL的备份还原(xtrabackup)

孤人 提交于 2020-03-20 07:23:59
MySQL的备份还原(xtrabackup) xtrabackup简介 xtrabackup是percona提供的MySQL数据库的备份工具,是唯一开源的能对innodb和xtradb数据库进行热备的工具 xtrabackup的特点 1.备份还原过程快、可靠 2.备份过程不会打断正在执行的事务 3.能够基于压缩等功能介于磁盘空间和流量 4.自动实现备份检验 5.开源免费 xtrabackup备份过程 xtrabackup安装 xtrabackup在centos的EPEL源中,可以在配置完EPEL源后使用yum安装 [root@localhost ~]# yum install -y percona-xtrabackup 也可以去官网下载最新版本的xtrabackup https://www.percona.com/downloads/XtraBackup/LATEST xtrabackup使用 xtrabackup [option] BACKUP-ROOT-DIR 选项 说明 --user 备份时连接到MySQL的账号 --password 备份时连接到MySQL所使用的账号的密码 --host 备份数据库的地址 --databases 所要备份的数据库名,如果有多个数据库可以使用","隔开,如果备份表则使用"DATABASE.TABLE"来指明 --incremental

docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 3

安稳与你 提交于 2020-03-20 00:05:47
经过前两篇文章, docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 1 docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 2 已经可以使用docker-compose发布小型的应用了。其实在开发环境中,我觉得还是挺方便的吧。(个人认为哈) 这里再扯点别的。 1. 个人以为,jenkins是个好东西,其实用jenkins, 前面 part 1, part 2 还可以更简单。 不过这里就研究了。 2. 如果没有配置docker的阿里镜像加速,挂掉是必须的哈。 其实配置阿里的docker加速器,也不太难: 就注册个阿里的开发者帐号就行。 然后就会有你自己的加速配置。 如果想重新开始, 就先 # docker-compose down 如果实在搞不明白,就用docker stop, docker rm 等命令先停掉容器,再一个个删吧。 3. 查看 docker-compose.yml里的 db_data 映射到哪里 # docker volume ls # docker volume inspect compose-demo_db_data 图中红框是实际db_data的位置。 因为这里实际保存mysql的数据

我应该将哪些ORM用于Node.js和MySQL? [关闭]

一个人想着一个人 提交于 2020-03-19 17:35:39
3 月,跳不动了?>>> 我正在重写一个项目来使用Node.js. 我想继续使用MySQL作为数据库(尽管我不介意重写架构)。 我正在寻找一种简单易用,性能合理的ORM,它支持缓存,多对一和多对多关系。 从我可以找到的MySQL ORM中, persistencejs 和 sequelize 似乎是最成熟的。 你有经验吗? 在我的决定中我应该注意哪些相关的利弊? #1楼 我可以建议Node ORM吗? https://github.com/dresende/node-orm2 有关自述文件的文档,支持MySQL,PostgreSQL和SQLite。 MongoDB自 2.1.x 版(2013年7月发布)开始提供 更新:根据项目的自述文件,不再维护此包。 它改为推荐 书架 和 续集 #2楼 我会选择 Sequelize 因为它的优秀文档。 这只是一个诚实的意见(我从来没有真正使用MySQL与Node那么多)。 #3楼 首先,请注意我没有使用其中任何一个(但已使用Node.js)。 两个库都记录得很好,并且具有稳定的API。 但是,persistence.js似乎 在更多项目中使用 。 但我不知道他们是否仍然使用它。 sequelize的开发者有时会在 blog.depold.com上发表 关于它的博客。 当您想使用主键作为外键时,您将需要 此博客文章中 描述的补丁。

mysql给root开启远程访问权限

谁说胖子不能爱 提交于 2020-03-19 13:28:45
报错:error no. 1045 access denied for user 'root'@'*****' (using password:YES)。 百翻查询才知道:MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问. !!!所以必须给root修改可以远程访问的权限 1.在连接服务器后,操作mysql系统数据库 命令为: mysql -u root -p use mysql; 查询用户表命令:select User,authentication_string,Host from user 这里也可以看出host默认都是localhost访问权限 接下来就是最重要的部分了: 1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' 这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址 2.flush privileges; 这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据 因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。 执行完这两步,再次查询用户表命令:select User,authentication_string,Host

MySQL基础篇(06):事务管理,锁机制案例详解

℡╲_俬逩灬. 提交于 2020-03-19 07:19:00
本文源码: GitHub·点这里 || GitEE·点这里 一、锁概念简介 1、基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题。锁机制是一个非常大的模块,贯彻MySQL的几大核心难点模块:索引,锁机制,事务。这里是基于MySQL5.6演示的几种典型场景,对面MySQL这几块问题时,有分析流程和思路是比较关键的。在MySQL中常见这些锁概念:共享读锁、排它写锁 ; 表锁、行锁、间隙锁。 2、存储引擎和锁 MyISAM引擎:基于读写两种模式,支持表级锁 ; InnoDB引擎:支持行级别读写锁,跨行的间隙锁,InnoDB也支持表锁 ; 3、锁操作API LOCK TABLE name [READ,WRITE] ;加表锁 UNLOCK TABLES ; 释放标所 二、MyISAM锁机制 1、基础描述 MySQL的表级锁有两种模式:共享读锁(Read-Lock)和排它写锁(Write-Lock)。针对MyISAM表的读操作,不会阻塞其他线程对同一表的读请求,但阻塞对同一表的写请求;针对MyISAM表的写操作,会阻塞其他线程对同一表的读和写操作;MyISAM引擎读写操作之间,以及写与写操作之间是串行化。当一次会话线程获取表的写锁后,只有当前持有锁的会话线程可以对表进行操作。其它线程的读、写操作都会等待,直到锁被释放为止。 2、验证案例

MySQL 处理重复数据

旧城冷巷雨未停 提交于 2020-03-19 02:47:28
MySQL 处理重复数据 sMySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。 防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) ); 如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示: CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) ); 如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功

MySQL 处理重复数据

好久不见. 提交于 2020-03-19 02:46:01
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) ); 如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示: CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) ); 如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。 INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据

mysql实用操作

不打扰是莪最后的温柔 提交于 2020-03-19 00:51:15
1、查看数据库、表和列show SHOW databases; -- 显示数据库列表 SHOW tables; -- 显示当前选择的数据库内可用表的列表 SHOW columns FROM students; -- describe students; 显示表名为students的列 SHOW CREATE TABLE thetable;  -- 显示表thetable的建表语句   HELP SHOW; -- 显示允许的show语句SELECT user();    -- 显示当前用户名SELECT database();  -- 显示当前使用数据库DESC students;  --显示students表结构 2、使用正则表达式regexp SELECT * FROM product WHERE num REGEXP '^[0-9]{4}'; -- 查找产品号以连续4位数字开始的产品 3、拼接字段concat SELECT CONCAT(name,' (',age,')') from students 4、常用文本处理函数 函数 说明 Left()/Right() 返回串左/右边的字符 Length() 返回串的长度 Locate() 找出串的一个子串  LTrim()/RTrim() 去掉左/右边的空格 Upper()/Lower() 将串转化为大/小写 SubString(

mysql常用函数

旧巷老猫 提交于 2020-03-19 00:48:38
一、常用字符串函数 select concat ('a','b','c'),concat('aaa',null); #连接a,b,c为一个字符串:'abc',与null进行连接的结果都是null select insert ("Hello world!",7,5,"World"); #将字符串从第7个字符开始以后的5个字符替换为“World”:'Hello World!' select lower ("HELLO"); #将所有字符变小写:'hello' select upper ("hello"); #将所有字符变大写:'HELLO' select left ('abcdefgh',4); #返回最左边的4个字符:'abcd'; 如果第二个参数为null,则不返回任何字符串 select right ('abcdefgh',4); #返回最右边的4个字符:'efgh'; 如果第二个参数为null,则不返回任何字符串 select lpad ('abc',12,'###'); #用字符串"###"对'abc'最左边进行填充,直到长度为12个字符长度:'#########abc' select rpad ('abc',12,'###'); #用字符串"###"对'abc'最右边进行填充,直到长度为12个字符长度:'abc#########' select ltrim (" abc