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;

    测试

  • 相关阅读:
    SharePoint 2013 图文开发系列之自定义字段
    SharePoint 2013 图文开发系列之Visual Studio 创建母版页
    SharePoint 2013 图文开发系列之代码定义列表
    SharePoint 2013 图文开发系列之计时器任务
    SharePoint 2013 图文开发系列之应用程序页
    SharePoint 2013 图文开发系列之事件接收器
    SharePoint 2013 图文开发系列之可视化WebPart
    SharePoint 2013 图文开发系列之WebPart
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 状态机工作流之日常报销示例
  • 原文地址:https://www.cnblogs.com/sswind/p/12072209.html
Copyright © 2011-2022 走看看