3)添加数据: 先添加主表,再添加副表 4)修改数据: 先修改副表,再修改主表 5)删除数据: 先删除副表,再删除主表 2.8、级联操作 级联修改: ON UPDATE CASCADE 级联删除: ON employee_department_fk FOREIGN KEY(DepartmentId) REFERENCES T_Department(Id) ON UPDATE CASCADE ON DELETE CASCADE ) 3、 3.2、MySQL变量 MySQL变量包括:全局变量、会话变量、局部变量 全局变量(内置变量):mysql数据库内置的变量 (所有连接都起作用) 查看所有全局变量: show variables 查看某个全局变量 num = 1 THEN SET str = '星期一'; -- 注意用SET进行赋值 ELSEIF num = 2 THEN SET str = '星期二'; ELSEIF num = 3 mysql用户的密码?
1、连接 mysql -u username -ppassword -P 3306 -D database -hip 2、列显示:"\G" mysql> select * from HUMMOCK_BLACK_LIST gmt_created: 2011-03-15 14:50:25 server_name: LoadTest gmt_modified_microsecond: 1300172398493 3、 去重操作:distinct mysql> select distinct server_name from HUMMOCK_BLACK_LIST limit 10; +-------------+
观察到数据库的连接比如 :3306 在数据库里可以使用 show processlist 来看连接 (必要的时候可以停止原master数据库) [root@origin-master ~]# /etc/init.d/mysql stop Shutting down MySQL........................................[ OK ].
Mysql常用的索引类型 类型 说明 Normal(普通) 普通索引,没任何限制。 Unique(唯一) 唯一索引要求健值不能重复。 3. 平衡二叉树(AVL Tree) 平衡二叉树的定义:左右子树深度差绝对值不能超过1。 什么意思呢?比如左子树的深度是2,右子树的深度只能是1或者3。 InnoDB 逻辑存储结构 MySQL的存储结构分为5级:表空间、段、簇、页、行。 ? 页 Page https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format.html 为了高效管理物理空间,对簇进一步细分,就得到了页。 https://www.cs.usfca.edu/~galles/visualization/BTree.html 比如MaxDegree(路数)是3的时候,我们插入数据1、2、3,在插入3的时候,本来应该在第一个磁盘块
会包含sock文件找不到、MySQL未初始化 还比如会反解0.0.0.0到本地失败的信息 2、服务器运行过程中的错误信息 3、时间调度器运行一个时间时产生的信息 演示: mysql> SET GLOBAL slow_query_log=1; mysql> SET GLOBAL long_query_time=2; mysql> USE mysql file mysql-bin.index mysql-bin.index: ASCII text # cat mysql-bin.index /var/lib/mysql/mysql-bin 默认值显示mysql-bin.index中的第一个二进制日志内容 如果查看二进制文件会看到比这里更详细的内容 mysql> SHOW BINLOG EVENTS IN 'mysql-bin mysql> SET SESSION sql_log_bin=0; 临时关闭二进制日志 mysql> source /tmp/a.sql 此路径mysql用户必须有权限访问 正确删除二进制日志
1.5 query_cache_size (1)简介: 查询缓存简称QC,使用查询缓冲,mysql将查询结果存放在缓冲区中,今后对于同样的select语句(区分大小写),将直接从缓冲区中读取结果。 一个sql查询如果以select开头,那么mysql服务器将尝试对其使用查询缓存。 (2)判断依据 mysql> show status like "%Qcache%"; +-------------------------+---------+ | Variable_name (3)配置示例 mysql> show variables like '%query_cache%' ; +------------------------------+---------+ | Variable_name query_cache_wlock_invalidate | OFF | +------------------------------+---------+ 6 rows in set (0.00 sec) mysql
关闭原集群mha 由于集群软件在侦测到主服务器失效后会干预相关资源,造成备机身份切换和IP飘移,为了避免这种影响,要关掉集群 [mysql@slave02 bin]$ masterha_check_status [mysql@slave02 bin]$ masterha_check_status --conf=/etc/app1.cnf app1 is stopped(2:NOT_RUNNING). [mysql@slave02 bin]$ ps faux | grep manager mysql 27192 0.0 0.0 103244 864 pts/2 S+ 00:23 Configuration File for keepalived global_defs { router_id LVS_slave01 } vrrp_instance VI_3 { state MASTER interface eth0 virtual_router_id 3 priority 85 advert_int 1 authentication
server_id=2 relay_log=relay-log log_bin=master-log relay_log_purge=0 read_only=1 节点slave2的配置: server_id=3 The key fingerprint is: 80:59:23:b9:f8:ce:7e:86:66:ad:23:82:b3:d9:a8:81 root@manager.zrs.com The key's ECDSA key fingerprint is 65:f7:d6:d7:ae:3b:a2:dc:2b:bc:33:64:0e:47:11:b4. server1] hostname=172.16.1.3 candidate_master=1 [server2] hostname=172.16.1.4 candidate_master=1 [server3] EnableRemoteCommands=1 3.开启服务 [root@manager ~]# systemctl start zabbix-agent.service 4.在客户端的界面上设置Hosts
测试脚本装完包后,再次执行测试脚本,就正常返回一个数字了[root@mysql-server scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg0[root@mysql-server scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gt38409这个数据从哪里来的呢 , 执行脚本的过程中生成了这个文件 /tmp/localhost-mysql_cacti_stats.txt[root@mysql-server scripts]# cat /tmp/localhost-mysql_cacti_stats.txtgg 268435456 ju:52 jv:10816055 jw:10511991 jx:6 jy:719085 jz:0 kg:0 kh:0 ki:0 kj:0 kk:0 kl:0 km:0 kn:0 ko:0 kp:3 kq:0 kr:0 ks:0 kt:0 ku:3 kv:0 kw:6 kx:87998 ky:6025810131 kz:8388608 lg:8388608 lh:4347852912824 li:4347852916081
explain select * from tb_item where title = '阿尔卡特 (OT-979) 冰川白 联通3G手机3'; ? t_user` (`id`, `username`, `password`, `name`) values('1','super','$2a$10$TJ4TmCdK.X4wv/tCqHW14.w70U3CC33CeVncD3SLmyMXMknstqKRe t_user` (`id`, `username`, `password`, `name`) values('2','admin','$2a$10$TJ4TmCdK.X4wv/tCqHW14.w70U3CC33CeVncD3SLmyMXMknstqKRe t_user` (`id`, `username`, `password`, `name`) values('5','stu2','$2a$10$nxPKkYSez7uz2YQYUnwhR.z57km3yqKn3Hr 如将主键置于where列表中,MySQL 就能将该查询转换为一个常亮。
---- 1、启动以及关闭MySQL服务器 - 首先,我们需要通过以下命令来检查MySQL服务器是否已经启动: ps -ef | grep mysqld - 如果MySQL已经启动,以上命令将输出mysql root@host# mysql -u root -p password; Enter password:******* mysql> use mysql; Database changed mysql ---- 3、/etc/my.cnf文件配置 - 一般情况下,你不需要修改该配置文件,该文件默认配置如下: [mysqld] datadir=/var/lib/mysql socket=/var/lib ---- 4、管理MySQL的命令 - 以下列出了使用MySQL数据库过程中常用的命令。 - USE 数据库名:选择要操作的MySQL数据库,使用该命令后所有MySQL命令都只针对该数据库。 --------------+ | employee_tbl | | runoob_tbl | | tcount_tbl | +------------------+ 3
root密码: step1:net stop mysql step2:mysqld --skip-grant-tables 启动mysql服务,但不加载权限检查 step3:再开个窗口输入mysql 启动mysql服务,但不加载权限检查 step3:再开个窗口输入mysql回车进入mysql 界面 step4:update mysql.user set password=password('mysql >create table t1(f1 int,f2 int(3)); Query OK, 0 rows affected (0.22 sec) mysql> desc t1; +-------+--- create table t3(id int not null auto_increment primary key); Query OK, 0 rows affected (0.11 sec) mysql : 0 mysql> select * from t7; +------+ | sex | +------+ | M | | NULL | | M | +------+ 3 rows in
client.query("CREATE table testxxx.test (id int(10),name char(20))") => nil 2.3.0 :026 > 在本地进行检查 mysql > end => 1..100 2.3.0 :044 > 本地检查 mysql> show tables; +-------------------+ | Tables_in_testxxx +------+---------+ | id | name | +------+---------+ | 1 | hello1 | | 2 | hello2 | | 3 | hello3 | | 4 | hello4 | | 5 | hello5 | | 6 | hello6 | | 7 | hello7 | | 8 | hello8 2.3.0 :055 > r=client.query("show databases") => #<Mysql2::Result:0x00000001c3f810 @query_options={
3.1 MySQL Replication 概述 MySQL Replication俗称MySQL AB复制,主要是通过把主服务器上的二进制日志通过网络传到从服务器上,MYSQL会自己把二进制日志转换成相关的 但这种复制不同于MySQL簇,它是单向异步的。目前MySQL 复制在企业应用率非常高,已经成为系统工程师必备的技能。 具体的原理请参考MySQL官方文档:http://dev.mysql.com/doc/refman/5.1/zh/index.html 3.2 安装MySQL Slave 实验环境: 实验环境是沿用第二章实验基础上的 : 主机名 IP地址 作用 MySQL-Master 192.168.0.13 MySQL主库服务器 MySQL-Slave 192.168.0.14 MySQL 从库服务器 3.3 在MySQL MySQL配置文件。
. ---- 执行优化 [root@opti-slave hunter]# time nohup mysql -u root -p < optimize.sql 2>&1 >> optim.log 也可以使用 show processlist 在数据库里查看当前状态 mysql> show processlist; +----+------+-----------+------+--------- --+-----------------------------------------+-----------+---------------+ 2 rows in set (0.01 sec) mysql
1 背景知识 1.1 快照读 select * from table where [case]; 读取事物序列号对应的快照(readView) ,所以不会出现幻读,也不会触发锁; 关于 mysql 的log ,readView相关,可参读 : mysql事物(1) - 背景知识:log,readView 1.2 当前读 select * from table where [case] for update / in share mode; insert , update ,delete 读取最新版本数据,会触发锁; 1.3 隔离级别 不同的隔离级别,对待锁的处理也是不一样的,这里我们以MYSQL 5.7 ,innoDB引擎下,RR(repeatable-read)级别探讨; 隔离级别相关,参读 : mysql事物(2) - 隔离级别 2 示例表 2.1 表名 t 2.2 表结构和数据 id(主键索引 where name= "张三" for update; 现象 : 触发锁表 原因 : 无索引,使用当前读 , 锁住整张表,保证下次当前读的一致性; 3.2 间隙级 聚簇索引 / 非聚簇索引 参读 : mysql
事务就是要保证一组数据库操作,要么全部成功,要么全部失败 事务支持是在引擎层实现的 MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。 比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一 隔离性与隔离级别 问题分类 当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty 串行化 V1 2 1 1 1 v2 2 2 1 1 v3 2 2 2 2 其他说明 实现 在实现上,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准. 你一定希望在校对过程中,即使有用户发生了一笔新的交易,也不影响你的校对结果 事物隔离的实现 展开说明“可重复读” 在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。 假设一个值从 1 被按顺序改成了 2、3、4,在回滚日志里面就会有类似下面的记录。 image.png 当前值是 4,但是在查询这条记录的时候,不同时刻启动的事务会有不同的 read-view。
Spring3+Mybatis3+Mysql+ivy+liquibase 集成 近一周时间所学技术:整合 Spring+MyBatis+MySql+ivy+liquibase Mybatis:是一个基于 1.3.174" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive="false"/> <dependency org="<em>mysql</em> " name="<em>mysql</em>-connector-java" rev="5.1.18" conf="compile->compile(*),master(*);runtime->runtime(*)" transitive beans.xml和数据库配置文件db_config.pro..s 到src目录下 dbconfig.pro... # Database connection database.driver=com.mysql.jdbc.Driver database.url=jdbc:mysql://127.0.0.1:3306/test database.user=root database.password=123456 # Database
MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据库表选择不同的存储引擎,也可以根据自己的需要编写自己的存储引擎。
pip install pymysql 使用python3和Django搭建自己的服务器的时候使用的是sqlite数据库,一切顺利. 可是等到布置生产环境的时候要换成MySQL,根据Django官网的文档也设置好了setting.DATABASES. pip3 install pymysql了,大概是因为Django默认的还是使用MySQLdb吧. 然后python3 manage.py migrate成功. 这样Django站点就成功使用MySQL作为数据库了.