• Mysql主从备份


    一、基本权限命令

    # 修改密码
    MariaDB [(none)]> set password = PASSWORD('123456');
    
    # 创建普通用户
    MariaDB [(none)]> create user xiaoming@'%' identified by '123';
    
    # 远程登陆
    mysql -uxiaoming -p -h 192.168.11.59
    
    
    # 查询mysql的用户表
    select user,host,password from mysql.user;

     

    二、数据库权限设置

    grant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权
    grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权
    grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权
    grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限
    # 给普通用户查询权限
    grant select on *.* to xiaoming@'%';
    
    # 查询用户的权限
    show grants for xiaoming@'%';
    
    # 移除用户的所有权限
    revoke all privileges on *.* from xiaoming@'%';

     

    三、数据库的备份和恢复

    # 导出mysql的所有数据库
    [root@localhost ~]# mysqldump -u root -p --all-databases > /tmp/db.sql
    
    # 导入数据库方式1(在mysql环境了)
    MariaDB [mysql]> source /tmp/db.sql;
    
    # 导入数据库方式2
    [root@localhost ~]# mysql -u root -p < /tmp/db.sql
    
    # 导入数据库方式3
    使用navicat
    
    # 导入数据库方式4,针对数据量特别大
    使用xtrabackup

     

    四、主从同步

    主从同步实现读写分离

      master     -->   可读可写数据

      slave  -->    可读数据

     

    主从机制实现原理

    (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); 
    (2) slave将master的binary log events拷贝到它的中继日志(relay log); 
    (3) slave重做中继日志中的事件,将改变反映它自己的数据。


    2.配置master数据库
    # 1.关闭数据库
    [root@localhost ~]# systemctl stop mariadb
    
    # 2.修改配置文件
    [root@localhost ~]# vim /etc/my.cnf
    
    '''添加以下代码'''
    #解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin 
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    
    
    #3.启动数据库
    [root@localhost ~]# systemctl start mariadb

     

     2.master主库创建并授权同步的用户

    # 1.创建用户
    MariaDB [(none)]> create user haha@'%' identified by '123';
    
    # 密码提示太简单
    MariaDB [(none)]> set global validate_password_policy=0;
    
    # 2.授权用户
    MariaDB [(none)]> grant replication slave on *.* to haha@'%';
    
    # 3.查询用户权限
    MariaDB [(none)]> show grants for haha@'%';
    
    # 4.实现对主数据库锁表只读,防止数据写入
    MariaDB [(none)]> flush table with read lock;
    
    # 5.查询主库状态
    MariaDB [(none)]> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      605 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    
    # 6.打开另一个终端,导出所有数据库
    [root@localhost ~]# mysqldump -u root -p --all-databases > /data/sql.db
    
    # 7.将数据库文件通过scp发送至slave
    scp /data/sql.db ip@root:/data/

     

    3.slave从库配置

    # 1.修改配置文件
    vim /etc/my.cnf
    [mysqld]
    server-id=3
    read-only=true
    
    # 2.重启数据库
    systemctl restart mariadb
    
    # 3.使用root用户登陆数据库
    
    # 4.导入数据
    mysql > source /data/db.sql
    
    # 5.开启主从之间的复制关系
    mysql > change master to master_host='192.168.11.59',
    master_user='haha',
    master_password='123',
    master_log_file='mysql-bin.000001',
    master_log_pos=605;
    
    # 6.开启同步功能
    mysql > start slave
    
    # 7.查看是否同步
    mysql > show slave statusG;

    4.主库解锁
    unlock tables;
    
    
    

    5.注意事项

    1.从库配置后退出root用户,使用普通用户登陆

    2.注意普通用户的授权问题

     
  • 相关阅读:
    __autoload函数
    错误处理try catch
    PHP面向对象基础实例
    类的继承关系实例
    YII重点文件
    //计算今年月度利息和
    cookie保存分页参数
    win64(win8)的python拓展包安装经验总结
    matcom安装时无法寻找到matlab.exe的解决办法
    《人人都是产品经理》阅读笔记一
  • 原文地址:https://www.cnblogs.com/st-st/p/10272986.html
Copyright © 2020-2023  润新知