• MySQL总结02


    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最大限度保持数据一致,但也有风险
      • 双写, 写的压力大
      • 谷歌半同步插件,异步改为半同步
  • 相关阅读:
    webpack + react 前端工程化实践和暂不极致优化
    图解Javascript——作用域、作用域链、闭包
    图解Javascript——变量对象和活动对象
    图解Javascript——执行上下文
    简单实用的进度条、时间轴
    Nginx配置文件nginx.conf中文详解(转)
    负载均衡——nginx理论
    JavaScript的闭包是什么意思以及作用和应用场景
    巧用HTML5给按钮背景设计不同的动画
    利用js的for循环实现一个简单的“九九乘法表”
  • 原文地址:https://www.cnblogs.com/nwu-edu/p/9385503.html
Copyright © 2020-2023  润新知