sql优化

  • Insert使用批量
  • 查询不要使用*, MySQ需要先查出表里的所有字段,再进行匹配
  • 字符串的查询条件要带引号,否则可能不走索引

备份及恢复

  • 备份
    mysqldump -uroot -ppasswd -B dbname > filename.sql
    note: -B备份指定库,使用-B备份文件中多了两行代码(create database dbname; use dbname;)
    -A是备份所有的库

  • 指定字符集备份
    mysqldump -uroot -ppasswd -B -default-character-set=utf8 dbname > mysql.bak.sql

  • 使用压缩命令备份
    mysqldump -uroot -ppasswd --default-character-set=utf8 dbname|gzip > mysql.bak.sql.zip

  • 备份多个库
    mysqldump -uroot -ppasswd -B dbname1 dbname2..|gzip > mysql.bak.sql.zip

  • 备份多个表
    mysqldump -uroot -ppasswd dbname tablename1 tablename2.. > mysql.bak.sql

  • 恢复
    mysqldump -uroot -ppasswd dbname < filename.sql

  • mysqldump关键参数

    • -B 指定多个库,增加建库语句和use语句
    • --compact去掉注释,适合调试输出,生产不用
    • -A备份所有库
    • -F刷新binlog日志
    • --master-data 增加binlog日志文件及对应的位置点
    • -x, --lock-all-tables
    • -d 只备份表结构
    • -t 只备份数据

mysqlbinlog

  • 开启binlog
    修改mysqld文件中的log-bin=日志文件名,binlog日志会根据自己的规则自动轮询
    binlog只记录增删改的操作日志,不记录查询的操作日志,此日志通常用来恢复数据用

  • 使用binlog日志恢复数据

    • 首先将binlog日志到处为sql文件
      mysqlbinlog -d dbname binlogname > bin.sql
      note: binlog文件只能用mysqlbinlog命令打开查看
      -d: 只导出数据内容

    • 将sql文件导入数据库
      mysql -uroot -ppasswd dbname < bin.sql

  • 刷新切割日志
    mysqladmin -uroot -ppasswd flush-log

命令使用范围

  • 在mysql内部操作外部命令
    system + 外部命令

  • 在mysql外部执行mysql内部命令
    mysql -uroot -ppasswd -e "sql命令"

字符集乱码问题

mysql字符集乱码问题主要是因为系统字符集、客户端字符集、mysql字符集不统一造成的

  • 客户端字符集修改
    临时改变显示字符集:set names utf-8
    永久:更改my.cng客户端模块的参数

  • 服务端字符集修改
    更改my.cnf参数

[mysql]
default-character-set=utf8 适合5.1及之前版本
default-set-server=utf8 适合5.5版本
  • linux系统字符集修改
    修改linux的字符集:vi /etc/sysconfig/i18n
    是修改的文件生效: source /etc/sysconfig/i18n 或者. /etc/sysconfig/i18n

  • 查看字符集
    mysql -uroot -ppasswd -e "show variables like 'character_set%'
    显示内容为:

  • 修改已经中文乱码的数据库表

    • 建库及建表语句到处,修改为utf8
    • 到处所有的mysql数据
    • 修改mysql服务端和客户端编码为utf8
    • 删除原有的库表及数据
    • 导入新的建库及建表语句
    • 导入mysql所有数据

MySQL主从同步

  • 文件同步

    • NFS网络文件共享同步存储数据
    • samba共享数据
    • 定时任务或守护进程结合rsync, scp
    • inotify(scrsync) + rsync触发式实时数据同步
    • ftp数据同步
    • ssh key + scp/rsync
  • mysql主从同步四种方案

    • 主从方式,通过同步binlog最大限度保持数据一致,但也有风险
    • 双写, 写的压力大
    • 谷歌半同步插件,异步改为半同步

MySQL总结02的更多相关文章

  1. mysql笔记02 创建高性能的索引

    创建高性能的索引 1. 索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 2. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序 ...

  2. MYSQL基础02(查询)

    查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL. 1.DUAL DUAL是一个虚拟表, ...

  3. MySQL高级02

    索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构.你可以简单理解为“排好序的快速查找数据结构”. 在数据之外,数据库系统还维护着满足特定查找算法的 ...

  4. MySQL案例02:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

    MySQL在授权用户时出现报错信息,具体信息如下: 一.错误信息 执行命令: GRANT SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SH ...

  5. Angular4+NodeJs+MySQL 入门-02 MySql操作类

    NodeJs操作MySQL类 此类封装了几个常用的方法:插入,更新,删除,查询,开启事务,事务提交,事务回滚等操作.有一这个类,操作MYSQL就方便多了. 批处理,存储过程等方法还没有添加,因为觉得目 ...

  6. MySQL训练营02

    一.表操作: 1.MySQL表的数据类型: MySQL的数据类型分为3种: 数值 时间/日期 字符/字符串 (1)数值类型: 包括:TinyInt.SmallInt.MediumInt.Int.Big ...

  7. MySQL丨02丨忘记root用户密码怎么办?

    软件:Mysql 版本:8.0.13 1. 先暂停mysql的服务,方法是在cmd里输入如下代码: net stop mysql 2. 在安装文件夹下创建一个文件:mysql-ini.txt (我的安 ...

  8. MySQL存储过程02

    这次接着说MySQL存储过程: 我们先看它的多分支控制结构case: case的语句很简单: case 变量名 when 条件1 then 输出结果1; when 条件2 then 输出结果2; .. ...

  9. MySQL数据库02

    MySQL数据库 前言: 前面我们了解了什么是数据库,什么是MySQL数据库以及如何运用,接下来我们接着深入学习MySQL. (提前声明,以下所提供的事例不标准,仅供参考) 数据库的备份与还原: 备份 ...

随机推荐

  1. QTP与QC整合

    QC-QTP整合 在本节中,我们将学习如何将QTP和QC整合.通过整合,在QTP自动化脚本可以直接从Quality Center执行.建立连接,第一个步骤是安装所需的加载项.我们将了解如何通过采取样品 ...

  2. OpenCV2马拉松第9圈——再谈对照度(对照度拉伸,直方图均衡化)

    收入囊中 lookup table 对照度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个样例,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( ...

  3. 【转】在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection

    首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后(具体过程这里就不多加说明) 然后保存退出 当我们重启网卡的时候问题来了(因为本人有点强迫症,多 ...

  4. go中加号的用法

    // + 的用法 package main import "fmt" func main() { // 加号两端都是数字的话,做加法运算 var i = 1 var j = 1 v ...

  5. 笔试算法题及解答(Python)

    1.给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数 # coding:utf-8 ''' Created on 2 ...

  6. 所有anaconda安装包失败的解决办法汇总

    多试几次,有时候网络不稳定下载一半会停掉 更改Pip源 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 1.首先确认镜像源 ...

  7. BeanUtils.copyProperties()拷贝属性时,忽略空值

    把source的属性值复制给target的相同属性上,注意:双方需要复制的属性要有get.set方法 BeanUtils.copyProperties(source, target, PublicUt ...

  8. java中形参中的 “. . .” 是什么意思

    如这个jdbc中封装的绑定参数的方法: /** * 绑定参数 * @param pstmt * @param os */ public static void executebindParam(Pre ...

  9. 【leetcode】654. Maximum Binary Tree

    题目如下: Given an integer array with no duplicates. A maximum tree building on this array is defined as ...

  10. js动态添加的元素绑定事件

    最近做的项目要实现一个动态添加动态删除的功能,思考了一下,该怎么给动态添加的元素绑定事件.最后觉得有两种方式比较可靠,第一种是在动态添加的html代码里添加oclick事件,然后给传个唯一的参数来判断 ...