美文网首页
mysql在windows下的安装以及主从定时热备份与恢复备份

mysql在windows下的安装以及主从定时热备份与恢复备份

作者: 潇豪 | 来源:发表于2020-01-17 11:14 被阅读0次

    首先声明:主从复制版本一致!!!为了避免不同版本带来的错误

    官网下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads

    这里使用的是5.7的免安装版本

    1. 解压到指定目录

    图片.png

    解压到指定目录并复制一份,分别更名为如图名称,方便后面做主从数据库配置

    2.增加配置文件my.ini

    重点说一下几个点
    log_bin=master-bin
    热备份一定要开启这个

    主库配置

    [mysqld]
    # 服务端使用的字符集默认为8比特编码的latin1字符集,设置为utf8字符
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 设置mysql的安装目录
    basedir = C:\\software\\mysql\\mysql-master
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能
    datadir = C:\\software\\mysql\\mysql-master\\data
    # 设置3306端口
    port = 3306
    server_id = 1    # 主库和从库需要不一致,分别配一个唯一的ID编号
    log_bin=master-bin    # 二进制文件存放路径,存放在根目录data文件夹下
    # binlog-do-db=test   # 需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制,这里要是配置了,同时也要在Slave(也就是你的从库) 上设定。
    # binlog-ignore-db=mysql    # 不需要复制的库,和上项同理
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [client]
    default-character-set=utf8
    
    

    从库配置

    # 服务端使用的字符集默认为8比特编码的latin1字符集,设置为utf8字符
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 设置mysql的安装目录
    basedir = C:\\software\\mysql\\mysql-slave
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能
    datadir = C:\\software\\mysql\\mysql-slave\\data
    # 设置3307端口
    port = 3307
    server_id = 2    # 主库和从库需要不一致,分别配一个唯一的ID编号
    log_bin=master-bin    # 二进制文件存放路径,存放在根目录data文件夹下
    # binlog-do-db=test   # 需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制,这里要是配置了,同时也要在Slave(也就是你的从库) 上设定。
    # binlog-ignore-db=mysql    # 不需要复制的库,和上项同理
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [client]
    default-character-set=utf8
    
    

    3. 安装mysql主从服务器

    打开cmd进入到主服务器目录

    图片.png

    mysqld -install MySQL-Master

    图片.png

    如果之前安装过这里需要移除掉之前的服务(如果未安装过请跳过此步)

    mysqld -remove MySQL-Master

    图片.png

    重新使用安装命令后提示


    图片.png

    初始化mysql

    mysqld --initialize --console

    会在控制台打印信息

    图片.png
    下面的临时密码我们需要拷贝一下,第一次登陆需要,如果使用mysqId --initalize会输出一个.err后缀的文件到data目录中,临时密码去那里查看

    初始化后,可以启动服务了

    net start mysql-master

    图片.png

    net stop mysql-master 为停止命令

    4.登陆mysql配置

    mysql -u root -pe8arpkE8iW)a

    记得登陆命令加上临时密码

    登陆后会发现无法操作数据库修改密码


    图片.png

    执行下面指令修改初始密码

    ALTER USER USER() IDENTIFIED BY 'root';
    use mysql;
    update user set authentication_string=password("root123") where user="root";
    flush privileges;

    图片.png

    执行成功后数据库就安装密码设置好了。从数据库同理

    • mysqld -remove MySQL-Slave
    • mysqld -install MySQL-Slave
    • mysqld --initialize --console 得到临时密码k>i+0<kXi1e0
    • net start mysql-slave
    • mysql -u root -P3307 -p 这里注意从数据库必须加端口号连接
    • ALTER USER USER() IDENTIFIED BY 'root';
    • use mysql;
    • update user set authentication_string=password("root123") where user="root";
    • flush privileges;

    5.数据库主从配置

    登录主数据库

    show master status;

    记录下面的file 和position


    图片.png

    主库创建一个用户用于和从库连接,并且授权

    create user slave;
    grant replication slave on *.* to 'slave'@'127.0.0.1'identified by 'root123';
    flush privileges;   
    

    然后去登录从数据库

    mysql -uroot -P3307 -proot123 记得一定要加端口号登录从库

    把主库和从库连接起来

    change master to master_host='127.0.0.1',master_port=3306,master_user='slave',master_password='root123',master_log_file='master-bin.000002',master_log_pos=1289;

    然后执行

    start slave; 关闭是stop slave

    查看 slave 的状态

    show slave status \G

    图片.png 图片.png

    这两个都是yes表示启动成功了

    我们去主数据库增加表更新数据在从数据库中就能看到更新了

    (可选)设置外部访问

    update user set host = ‘%’ where user =’root’;

    6. 热备份

    进入主库的bin目录
    cd C:\software\mysql\mysql-master\bin
    执行mysqladmin -uroot -proot flush-logs
    会在目录中生产备份文件

    图片.png

    定义bat脚本

    @echo  off
    set INTERVAL= 60 
    :Again  
    echo 定时任务开启,任意键立即触发
    cd C:\software\mysql\mysql-master\bin
    mysqladmin -uroot -proot123 flush-logs
    timeout %INTERVAL%
    goto Again
    
    

    set INTERVAL设置循环时间,
    或者删除循环直接放入windows计划任务中

    @echo  off
    
    echo 执行脚本
    cd C:\software\mysql\mysql-master\bin
    mysqladmin -uroot -proot123 flush-logs
    
    

    恢复备份
    进入data目录下

    mysqlbinlog  --no-defaults --set-charset=utf8  C:\software\mysql\mysql-master\data\master-bin.000004 | mysql -uroot -proot123
    

    --no-defaults --set-charset=utf8解决了执行导致的编码问题


    恢复备份脚本bat文件

    例如 master-bin.000006为需要恢复的备份
    备份脚本输入版本


    图片.png
    @echo  off
    set/p a1=请输入恢复文件并按回车:
    cd C:\software\mysql\mysql-master\bin
    mysqlbinlog  --no-defaults --set-charset=utf8  C:\software\mysql\mysql-master\data\%a1% | mysql -uroot -proot123
    
    Pause
    

    相关文章

      网友评论

          本文标题:mysql在windows下的安装以及主从定时热备份与恢复备份

          本文链接:https://www.haomeiwen.com/subject/sdbkictx.html