zoukankan      html  css  js  c++  java
  • MySQL备份

    1. 普通备份和还原

    mysqldump 备份:

    备份:

    mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份整个库)

    mysqldump -u 用户名 -p 数据库名 表名 > /备份路径/备份文件名(备份单个表)

      备份多个库: --databases 库1,库2

      备份所有库:--all-databases

      备份多个表:库名 表1 表2 

    还原:mysql 数据库 < 备份文件

    注意:还原时,若导入的是某个表,还要指定导入到哪个库中

    mysqlhotcopy 备份:

    备份:mysqlhotcopy --flushlog -u='用户' -p='密码' --regexp=正则 备份目录

    还原:cp -a 备份目录 数据目录(/var/lib/mysql 或者自定义目录)

    mysqldump 和 mysqlhotcopy 实例:

    mysql备份和还原

    把数据库 test 备份到 /dbbak 目录下
    #mysqldump -uroot -p test > /dbbak/test.sql
    模拟数据库test 误删(删除数据库test)
    #mysql> drop database test;
    通过 test.sql 文件还原
    #mysql -uroot -p test < test.sql
    
    备份多个数据库(--databases)
    #mysqldump -uroot -p --databases aa test > abc.sql
    还原
    #mysql -uroot -p < abc.sql
    
    备份有规则的数据库
    #mysqlhotcopy --flushlog -u='root' -p='123456' --regexp=^a /dbbak/
    还原
    cp -a a1 a2 a3 aa /usr/local/mysql/data/

    mysql-binlog 日志备份

    二进制日志(log-bin 日志):所有对数据库状态更改的操作(create、drop、update等)

    修改my.cnf 配置文件 开启binlog 日志记录功能

    # vim /etc/my.cnf
    log-bin=mysql-bin   #启动二进制日志

    按时间还原:

    --start-datetime

    --stop-datetime

    格式:

    mysqlbinlog --start-datetime 'YYYY-MM-DD HH:MM:SS' --stop-datetime 'YYYY-MM-DD HH:MM:SS' 二进制日志 |mysql -uroot -p

    按文件大小还原:

    --start-position

    --stop-position

    mysql-binlog 日志备份示例:

    开启二进制日志

     查看二进制日志

     按时间还原:

    [root@localhost /usr/local/mysql/data]# mysqlbinlog --start-datetime='2019-12-20 9:57:21' --stop-datetime='2019-12-20 9:58:18' mysql-bin.000006 | mysql -uroot -p

    按大小还原:

    2. 主从备份

    前提条件:安装mysql,开启二进制日志

    [root@centos2 ~]# vim /etc/my.cnf
    ...
    [mysqld]
    ...
    log-bin=mysql-bin
    server-id=129
    
    ...

     在服务器上授权服务器保存授权的信息

     

    mysql> grant replication slave on *.* to root@'192.168.80.131' identified by '123456';
    mysql> change master to
        -> master_user='root',
        -> master_password='123456',
        -> master_host='192.168.80.129',
        -> master_log_file='mysql-bin.000014',
        -> master_log_pos=391;

     之后在从服务器上会产生授权信息文件

     

     开启从服务器 start slave,并查看

    start slave;        开启从服务器
    
    show slave statusG;         查看从服务器的内容

    测试

     

    3. 主主备份

    3.1 以129 为主,131 为从配置一遍主从

    在主配置文件中配置(开启二进制日志和其他内容)

     3.2 在131 上做相同的配置

    replicate-do-db=test
    #在从服务器上设置需要同步的数据库,要同步多个库时可以写多行,每行一个。
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #指定哪个数据库不用同步

    启动MySQL服务

    129为主,131为从

    主服务授权

    从服务器保存授权信息

    131为主,129为从

    主服务器授权

    从服务器保存授权信息

    129 和 131 都执行 start slave(互为主从)

     测试

    4. 一主多从

      与配置一主一从类似,配置从服务器时,注意从服务器的server-id 不要相同,

    授权:

    mysql> grant replication slave on *.* to root@'%' identified by '123456';

    从服务器保存授权信息:

    mysql> change master to
        -> master_user='root',
        -> master_password='123456',
        -> master_host='192.168.80.130',
        -> master_log_file='mysql-bin.00006',
        -> master_log_pos=265;

    测试

    5. 多主一从

    5.1 主服务器配置

    主服务器开启二进制日志,启动服务,注意每台服务器的server-id 不同

    [root@localhost ~]# vim /etc/my.cnf
    ...
    log-bin=mysql-bin
    server-id=134   
    ...

    授权

    mysql> grant replication slave on *.* to root@'192.168.80.136' identified by '123456';

    5.2 从服务器配置

    修改配置文件

    [root@localhost ~]# vim /etc/my.cnf
    #插入以下内容
    
    [mysql_multi]
    mysqld = /usr/local/mysql/bin/mysql_safe
    mysqladmin = /usr/local/mysql/bin/mysqladmin
    user = root
    password = 123456
    
    [mysqld134]
    port = 3306
    datadir=/var/lib/mysqla/
    socket = /tmp/mysql.sock1
    pid-file = /var/lib/mysqla/134.pid
    user = mysql
    server-id = 136
    
    [mysqld135]
    port = 3307
    datadir=/var/lib/mysqlb/
    socket = /tmp/mysql.sock2
    pid-file = /var/lib/mysqla/135.pid
    user = mysql
    server-id = 136

    初始化数据库,创建目录 mysqla,mysqlb

    [root@localhost /usr/local/mysql]# ./scripts/mysql_install_db --datadir=/var/lib/mysqla --user=mysql
    [root@localhost /usr/local/mysql]# ./scripts/mysql_install_db --datadir=/var/lib/mysqlb --user=mysql

    设置 mysqla,mysqlb 目录及以下文件的属主为mysql(防止出现权限问题)

    [root@localhost /var/lib]# chown -R mysql.mysql mysqla
    [root@localhost /var/lib]# chown -R mysql.mysql mysqlb
    
    
    [root@localhost /usr/local]# chown -R mysql mysql/

    启动从服务器线程

    [root@localhost ~]# mysqld_multi --defaults-file=/etc/my.cnf start 134
    [root@localhost ~]# mysqld_multi --defaults-file=/etc/my.cnf start 135

     登录并保存授权信息

    [root@localhost ~]# mysql -P 3306 -S /tmp/mysql.sock1
    [root@localhost ~]# mysql -P 3307 -S /tmp/mysql.sock2
    mysql> change master to
        -> master_user='root',
        -> master_password='123456',
        -> master_host='192.168.80.135',
        -> master_log_file='mysql-bin.000009',
        -> master_log_pos=566;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show slave statusG;
    mysql> change master to
        -> master_user='root',
        -> master_password='123456',
        -> master_host='192.168.80.134',
        -> master_log_file='mysql-bin.000009',
        -> master_log_pos=566;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show slave statusG;

    测试

  • 相关阅读:
    Angular总结一:环境搭建
    适应移动端的地址四级(省市区街道)联动选择
    插入换行符
    自定义input[type="checkbox"]的样式
    使用zepto实现QQ消息左滑删除效果
    windows 下更新 npm 和 node
    [attribute |= value] 与 [attribute ^= value],[attribute ~= value] 与 [attribute *= value] 的联系与区别
    小程序父子组件onLoad和Created之间的问题
    小程序行内元素且有border的情况下,根据文字宽度自动调节元素宽度
    块级元素水平居中
  • 原文地址:https://www.cnblogs.com/sswind/p/12072209.html
Copyright © 2011-2022 走看看