数据库

Mycat 数据库分库分表中间件

心已入冬 提交于 2020-03-14 04:43:34
http://www.mycat.io/ Mycat 国内最活跃的、性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 实体书 Mycat权威指南 » 开源投票支持Mycat 下载 » start » Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理

乐观锁与悲观锁

十年热恋 提交于 2020-03-14 04:40:25
何谓悲观锁与乐观锁 乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 (1)悲观锁: 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中 synchronized 和 ReentrantLock 等独占锁就是悲观锁思想的实现。 (2)乐观锁: 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中 java.util.concurrent.atomic 包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 两种锁的使用场景 从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下(多读场景)

什么是SQL注入及SQL注入工具

风流意气都作罢 提交于 2020-03-14 04:26:56
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。 根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧,PHP注入的文章由NB联盟的另一位朋友zwell撰写,希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go... 入 门 篇 如果你以前没试过SQL注入的话,那么第一步先把IE菜单=

面向对象方法及软件工程——团队答辩

天大地大妈咪最大 提交于 2020-03-14 03:43:52
一、团队信息   1700802109 陈宁宁 https://home.cnblogs.com/u/alwaysni/   1700802088 韩晓忠 https://home.cnblogs.com/u/hanx/   1700802110 余金炜 https://home.cnblogs.com/u/YU2364565456/   1700802045 冶青俊 https://home.cnblogs.com/u/jun3011/ 二、团队项目的总体效果图                三、开发项目过程的博客链接    面向对象与软件工程——团队作业1    面向对象及软件工程——团队作业2    面向对象及软件工程——团队作业3 四、实现的功能及其效果的描述    1.登录注册功能 :用户可以进行注册、登录。由于使用微信小程序云开发自带的数据库,数据库自身的读写权限有所限制,并且没有通过云函数对数据库实现增删改查,会导致不同微信号下,可以使用相同的用户名或密码,进行注册、登录。但是信息是各自分离的。简单来说,你登陆的账号,必须要在你的微信号下注册(由于_openid的限制,数据访问的权限,没用云函数进行数据库的读写)。   2.登录之后修改信息功能:用户登录之后,可以完善、修改个人信息。包括密码、姓名、性别、学校、备注。   3.发布活动功能:用户登录之后可以发布活动

SQL Server附加数据库出现错误5123的正确解决方法

ε祈祈猫儿з 提交于 2020-03-14 02:20:26
因为自己有一本基于SQL Server 2005的数据库教程,里边使用的 示例数据库 是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 2008,示例数据库是AdventureWorks for SQL Server 2008。起初我以为示例数据库AdventureWorks for SQL Server 200 5 与AdventureWorks for SQL Server 200 8 数据库结构应该差不多,可是在练习的过程中,我发现两个数据库中很多表的结构还是有很多不一样的地方。于是决定到微软下载中心将示例数据库AdventureWorks for SQL Server 2005下过来,附加到SQL Server 2008上,以便顺利进行练习。我以SQL Server 2008的超级管理员账户“ sa ”连接登录到实例SQLSERVER2008: 在附加示例数据库AdventureWorks for SQL Server 2005时,弹出了下图 这个错误: 仔细看了一下主要信息“ 尝试打开或创建物理文件......时,CREATE FILE遇到操作系统错误 5(拒绝访问。) ” ,一看就知道应当是对要附加的数据文件的操作权限不够。 按一般的思维习惯,我们会对操作权限不够的文件授予足够的操作权限。比如,有网友说“

django数据库分库migrate

假装没事ソ 提交于 2020-03-14 01:51:36
最近在研究微服务和分布式,设计到了数据库分库,记录一下 首先,创建多个数据库,如果是已经生成的数据库,可以分库,这里我是新创建的项目,刚好可以用来尝试 我是用docker创建的mysql数据库容器 拉取docker镜像: docker pull mysql:5.7 创建容器: docker run --name=mysql5.7 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 创建多个mysql容器之后,django配置好相应数据库,我这里分成了三个数据库,一个是默认,放django的user,group,permission,session之类的,另外一个是order和sale两个app的,这里我打算下一步微服务的时候再拆开,这里先记录分库的事情,数据库代码如下: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '192.168.1.112', 'PORT': '13308', 'NAME': 'default', 'USER': 'root', 'PASSWORD': '0123456789', 'TEST': { 'MIRROR': 'default' } }, 'sale': { 'ENGINE':

利用juniper+iptables,在外网访问内网服务器。

ぐ巨炮叔叔 提交于 2020-03-14 00:54:51
1、用到的设备:juniper防火墙、linux服务器、花生壳。 2、拓扑图 3、配置步骤 网络上主机与主机之间通信,是根据ip地址来寻找对方。而内网环境基本上都是私有地址,所以我们正常情况下无法访问内网的主机。就算我们知道Juniper出口的ip地址,只要Juniper重新拨号,那么这个Ip地址就会改变,但是我们又必须要用到ip地址。这时,我们就要用到“花生壳”了。购买一个域名,每当Juniper重新拨号后,它都能解析光纤最新的ip地址。然后,再利用防火墙的转发规则,我们就可以实现从内网访问外网。 假设我有一个域名“cninsure-2011.gicp.net“ ,本例中,我最终的目录是访问内网的数据库服务器,一般情况下,直接访问数据库服务器不太安全,这时,我们可以利用Linux服务器自带的iptables 对端口进行转发,譬如说我在家访问33669号端口,当数据包经过Juniper防火墙到达192.168.1.50后,根据iptables的规则,只要数据包的目的端口是33669,就将该包转发到192.168.1.228的3306号上,而数据库的常用端口就是3306,从而在外网访问数据库。 a、在Juniper防火墙上添加策略,放行目的端口是33669的数据包。如下图所示 登录Juniper的控制端,左边Policy---->Service---->Custom,然后点

数据库mysql实战

▼魔方 西西 提交于 2020-03-14 00:42:17
--创建图书管理系统的数据库 create database book; --使用数据库 use book; --创建读者信息表 create table reader( card_id char(18), name varchar(10), sex enum('男','女'), age tinyint, tel char(11), balance decimal(7,3) ); --查看数据库表列表 show tables from book; --查看数据表的基本结构 show columns from reader; desc reader; --查看表的详细结构(可以用来显示数据表的创建语句) show create table reader; View Code 对table进行的操作 --修改表添加列 alter table reader add email varchar(30); --查看表的基本结构 desc reader; --修改表,在指定位置添加列 alter table reader add email2 varchar(30) after tel; --修改列名 alter table reader change email2 email_bak varchar(30); --修改列的数据类型 alter table reader modify

Mysql mysqldump用法

廉价感情. 提交于 2020-03-13 22:20:11
注:用户名:root 密码:DbPasswd 生成的sql脚本问 db.sql 导出数据库为DBName的表结构(不导数据) mysqldump -uroot -pDbPasswd -d DBName > db.sql 导出数据库为DBName的表结构及其所有数据(不加-d即可) mysqldump -uroot -pDbPasswd DBName > db.sql; 导出数据库为DBName的表(test)的结构 mysqldump -uroot -pDbPasswd -d DBName test > db.sql 导出数据库为DBName的表(test)的结构及其所有数据(不加-d即可) mysqldump -uroot -pDbPasswd DBName test > db.sql end. enjoy it! LOL 来源: https://www.cnblogs.com/x9mars/p/12488767.html

sql server 中间件支持读写分离

南楼画角 提交于 2020-03-13 21:09:30
经过一段时间艰苦的奋斗,终于把sql server的读写分离搞定了。大家可以下载oneproxy-for-sqlserver来使用此功能。更多消息,可以访问 平民软件官网 获取。或者加入群 数据库监控 521095285 ,或者关注 oneproxy-monitor框架项目 (oneproxy-for-sqlserver是在此项目下开发的,会同步更新此框架) 下面说说oneproxy-for-sqlserver读写分离的使用方法和开发中遇到的有趣问题。 一. 使用方法 为了支持读写分离,需要修改[oneproxy]标签的数据和增加[database_xxx]标签的数据以及数据库组的信息。详细如下所示: 1) 在[oneproxy]标签下面增加:passwordseparate = true和readslave=true。增加后的配置如下所示: [oneproxy] logfile = oneproxy_log.log pidfile = oneproxy_pid.pid listen_addr = 0.0.0.0 listen_port = 9999,7777,6666 httpserver_addr = 0.0.0.0 httpserver_port = 8080 log_level = error data_dump = false log_sql = false