• MySQL 5.7的安装及主从复制(主从同步)


    1、master上开启binlog日志,配置如下

    一般mysql配置文件在目录/etc下,叫my.cnf (如果找不到的话也有可能在这些目录下:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/mysql/etc/my.cnf,~/.my.cnf)

    [mysqld]

    basedir=/usr/local/mysql

    datadir=/data/mysqldata

    socket=/tmp/mysql.sock

    user=mysql

    server-id=1

    port=3306

    server-id=1 #服务器id (主从必须不一样)

    log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径

    #作为主机的配置

    binlog-do-db=employees #要给从机同步的库

    #binlog-do-db=

    binlog-ignore-db=mysql #不给从机同步的库(多个写多行)

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    binlog-ignore-db=sys

    expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改

    [root@001 employees_db]# service mysqld restart #重启数据库

    测试log_bin是否成功开启

    mysql> show variables like '%log_bin%';

    2、master的数据库中建立备份账号:backup为用户名,%表示任何远程地址,如下表示密码为1234的任何远程地址的backup都可以连接master主机

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

    mysql> use mysql

    mysql> select user,authentication_string,host from user;

    3、拷贝数据

    重启MySQL服务并设置读取锁定,读取锁定的意思是只能读取,不能更新,以便获得一个一致性的快照

    mysql> show master statusG #

    查看主服务器上当前的二进制日志名和偏移量值这里的file 和position 要和从上的一致

    导出master(192.168.1.222)种的数据,然后导入slave 中

    master:

    [root@001 employees_db]# mysqldump -uroot -p123456 -hlocalhost employees > /opt/employees.bak

    [root@001 employees_db]# yum install openssh-clients -y #(注:slave也需要安装)

    slave:

    [root@001 employees_db]# yum install openssh-clients -y

    [root@001 ~]# scp /opt/employees.bak root@192.168.1.233:/opt/

    root@192.168.1.233's password: #输入密码

    employees.bak 100%

    4、配置slave(192.168.1.233)

    [root@002 ~]# vim /etc/my.cnf

    [mysqld]

    basedir=/usr/local/mysql #mysql路径

    datadir=/data/mysqldata #mysql数据目录

    socket=/tmp/mysql.sock

    user=mysql

    server_id=2 #MySQLid 后面2个从服务器需设置不同

    port=3306

     #加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。

    read_only = 1

    master_info_repository=TABLE

    relay_log_info_repository=TABLE

    #relay_log_recovery=1 #从机禁止写

    #super_read_only=1 #从机禁止写

    然后导入到mysql数据库中,slave上的employees数据库不存在则先创建,然后再导入

    mysql> create database employees;

    [root@002 ~]# mysql -uroot -p123456 -hlocalhost employees < /opt/employees.bak

    [root@002 ~]# service mysqld restart

    登录slave数据库,并做如下设置

    [root@002 ~]# mysql -uroot -p123456

    mysql> stop slave;

    mysql> change master to

    -> master_host='192.168.1.222', #master的ip

    -> master_user='backup', #备份用户名

    -> master_password='123456', #密码

    -> master_log_file='mysql-bin.000002', #上面截图,且要与master的参数一致

    -> master_log_pos=154; #上面截图,且要与master的参数一致

    mysql> start slave;

    查看slave从机的状态

    mysql> show slave status G

    图中2个yes 代表设置成功

    5、关闭掉主数据库的读取锁定,并测试

     mysql> unlock tables;

    在marster中创建一个新表再查看slave中是否有数据

    master:

    mysql> use employees;

    mysql> create table test001(id int auto_increment primary key,name varchar(20) not null);

    mysql> insert into test001 values(null,'will');

    mysql> insert into test001 values(null,'jim');

    mysql> insert into test001 values(null,'tom');

    slave:

    mysql> use employees;

    mysql> show tables;

    mysql> select * from test001;

    测试2:重启关闭从数据库,主删除test001表,然后主从数据库都重启看是否正常

    mysql> drop table test001;

  • 相关阅读:
    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    用户画像——“打标签”
    python replace函数替换无效问题
    python向mysql插入数据一直报TypeError: must be real number,not str
    《亿级用户下的新浪微博平台架构》读后感
    【2-10】标准 2 维表问题
    【2-8】集合划分问题(给定要分成几个集合)
    【2-7】集合划分问题
    【2-6】排列的字典序问题
    【2-5】有重复元素的排列问题
  • 原文地址:https://www.cnblogs.com/franson-2016/p/8677301.html
Copyright © 2020-2023  润新知