美文网首页
linux安装mysql8并且实现主从同步

linux安装mysql8并且实现主从同步

作者: 我的小熊不见了 | 来源:发表于2019-06-03 09:49 被阅读0次

    服务器准备

    准备服务器Server1和Server2,如果在同一个服务器的话则安装mysql时需要改变其端口。

    卸载mysql

    在安装之前必须先检查主机上有没有安装过mysql,如果安装过的话必须先卸载。

    安装mysql

    下载软件包:

    wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

    本地安装:

    yum localinstall mysql80-community-release-el7-1.noarch.rpm

    安装mysql:

    yum install mysql-community-server

    设为开机启动:

    systemctl enable mysqld

    systemctl daemon-reload

    启动mysql:

    systemctl start mysqld

    以上步骤就安装好mysql8了。

    获取mysql的临时密码:

    grep 'temporary password' /var/log/mysqld.log

    登录mysql:

    mysql -uroot -p

    会提示输入密码,输入之前获取的临时密码即可登录。

    此时需要修改mysql的密码,要不然之后的步骤也会强制提示你需要修改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '121b33dAj934J1^Sj9ag';

    mysql8默认对密码的强度有要求,需要设置复杂一点,要不然也会提示错误。

    刷新配置:

    FLUSH PRIVILEGES;

    主从配置

    在主从配置之前需要确保两台mysql需要同步的库状态一致。

    配置文件默认在/etc/my.cnf下。

    在配置文件中新增配置:

    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=100  
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    

    修改配置后需要重启才能生效:

    service mysql restart

    重启之后进入mysql:

    mysql -uroot -p

    在master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

    CREATE USER 'slave'@'%' IDENTIFIED BY '@#$Rfg345634523rft4fa';

    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

    语句中的%代表所有服务器都可以使用这个用户,如果想指定特定的ip,将%改成ip即可。

    查看主mysql的状态:

    show master status;

    记录下FilePosition的值,并且不进行其他操作以免引起Position的变化。

    在从my.cnf配置中新增:

    mysqld]
    ## 设置server_id,注意要唯一
    server-id=101  
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin   
    ## relay_log配置中继日志
    relay_log=edu-mysql-relay-bin  
    

    修改配置后需要重启才能生效:

    service mysql restart

    重启之后进入mysql:

    mysql -uroot -p

    change master to master_host='172.17.0.2', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

    master_host :Master的地址

    master_port:Master的端口号

    master_user:用于数据同步的用户

    master_password:用于同步的用户的密码

    master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

    master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

    master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

    在从mysql中查看主从同步状态:

    show slave status \G;

    此时的SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。

    开启主从复制:

    start slave;

    再次查看同步状态:

    show slave status \G;

    SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启。

    若SlaveIORunning一直是Connecting,有下面4种原因:

    1、网络不通,检查ip端口

    2、密码不对,检查用于同步的用户名和密码

    3、pos不对,检查Master的Position

    4、mysql8特有的密码规则问题引起:

    ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '@#$Rfg345634523rft4fa';

    将密码规则修改为:mysql_native_password

    如果需要指定想要主从同步哪个数据库,可以在master的my.cnf添加配置:

    binlog-do-db:指定mysql的binlog日志记录哪个db

    或者在slave的my.cnf添加配置:

    replicate-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可 replicate-ignore-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可

    如果想要同步所有库和表,在从mysql执行:

    STOP SLAVE SQL_THREAD;
    CHANGE REPLICATION FILTER REPLICATE_DO_DB = ();
    start SLAVE SQL_THREAD;

    如果以上步骤出现问题,可以查看日志:

    /etc/log/mysqld.log

    相关文章

      网友评论

          本文标题:linux安装mysql8并且实现主从同步

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