Mysql双机主从搭建

王柳  金牌会员 | 2022-10-13 11:00:38 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 886|帖子 886|积分 2658

Mysql双机主从搭建
一、规划说明

主节点:
IP:192.168.1.146
系统:Centos7.6
版本:MySQL-5.7.38
mysql账户密码:root/Admin_2022
同步账户:mysync/Admin_2022
主机名:m1
已关闭防火墙,配置阿里源,连接互联网
从节点:
IP:192.168.1.147
系统:Centos7.6
版本:MySQL-5.7.38
mysql账户密码:root/Admin_2022
同步账户:mysync/Admin_2022
主机名:m2
已关闭防火墙,配置阿里源,连接互联网
MySQL下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
二、主节点安装MySQL

1、下载MySQL和安装
  1. 下载安装包到home下
  2. wget -P /home https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
  3. tar -xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
  4. ls /home/
  5. 卸载mariadb
  6. rpm -qa | grep mariadb
  7. rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
  8. 安装MySQL
  9. cd /home/
  10. yum install ./*.rpm
复制代码
 


2、启动MySQL,设置root密码,允许远程登录
  1. #启动并设置开机自启
  2. systemctl start mysqld
  3. systemctl enable mysqld
  4. systemctl status mysqld
  5. #查看版本
  6. mysql --version
  7. mysql  Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using  EditLine wrapper
  8. #查看初始root密码,并重新设置
  9. grep 'temporary password' /var/log/mysqld.log
  10. 2022-10-11T03:24:23.926690Z 1 [Note] A temporary password is generated for root@localhost: +ejyY)mTH0di
  11. #初始密码:+ejyY)mTH0di
  12. +ejyY)mTH0di
  13. #登录mysql,并重新设置root密码
  14. mysql -u root -p
  15. #设置root密码是Admin_2022
  16. mysql> set password for root@localhost = password('Admin_2022');
复制代码
 

  1. #查看当前数据库
  2. mysql> show databases;
  3. +--------------------+
  4. | Database           |
  5. +--------------------+
  6. | information_schema |
  7. | mysql              |
  8. | performance_schema |
  9. | sys                |
  10. +--------------------+
  11. 4 rows in set (0.00 sec)
  12. #设置允许远程
  13. mysql> use mysql;
  14. Reading table information for completion of table and column names
  15. You can turn off this feature to get a quicker startup with -A
  16. Database changed
  17. mysql> select user,host from user;
  18. mysql> update user set host="%" where user="root";
  19. Query OK, 1 row affected (0.00 sec)
  20. Rows matched: 1  Changed: 1  Warnings: 0
  21. mysql> flush privileges;
  22. Query OK, 0 rows affected (0.00 sec)
复制代码
 


三、副节点安装MySQL

参考主节点
四、主节点配置

1、配置my.cnf,修改默认存储目录为指定目录/data/下
  1. 查看配置文件
  2. cat /etc/my.cnf
  3. 停止MySQL服务,拷贝文件到新建/data/下
  4. systemctl status mysqld
  5. systemctl stop mysqld
  6. mkdir /data/
  7. cp -arp /var/lib/mysql /data/
  8. mv /var/lib/mysql /var/lib/mysqlbak
  9. 修改配置文件
  10. vim /etc/my.cnf
  11. datadir=/data/mysql
  12. socket=/data/mysql/mysql.sock
  13. 重启MySQL
  14. systemctl restart mysqld
  15. systemctl status mysqld
复制代码
 



2、配置my.cnf,指定server-id和开启binlog
  1. cat >>/etc/my.cnf<<EOF
  2. server-id = 1
  3. log-bin = mysql-bin    #主从服务的核心 定义binblog日志的前缀名
  4. #binlog-do-db=test      #需要同步的数据库,如果没有本行,即表示同步所有的数据库
  5. #binlog-do-db=mydb      #需要同步的数据库,同时同步test、mydb库
  6. binlog-ignore-db=mysql #被忽略的数据库
  7. EOF
  8. 生效需要重启MySQL,等会后面再重启
复制代码
 

4、查询显示主服务器状态
  1. mysql -u root -p
  2. mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.147' IDENTIFIED BY '12345678';
  3. mysql> flush privileges;
复制代码
 

五、从节点配置

1、配置my.cnf,修改默认存储目录为指定目录/data/下
  1. 查看配置文件
  2. cat /etc/my.cnf
  3. 停止MySQL服务,拷贝文件到新建/data/下
  4. systemctl status mysqld
  5. systemctl stop mysqld
  6. mkdir /data/
  7. cp -arp /var/lib/mysql /data/
  8. mv /var/lib/mysql /var/lib/mysqlbak
  9. 修改配置文件
  10. vim /etc/my.cnf
  11. datadir=/data/mysql
  12. socket=/data/mysql/mysql.sock
  13. 重启MySQL
  14. systemctl restart mysqld
  15. systemctl status mysqld
复制代码
 
2、配置my.cnf,指定server-id和开启binlog
  1. cat >>/etc/my.cnf<<EOF
  2. server-id = 1
  3. log-bin = mysql-bin    #主从服务的核心 定义binblog日志的前缀名
  4. #binlog-do-db=test      #需要同步的数据库,如果没有本行,即表示同步所有的数据库
  5. #binlog-do-db=mydb      #需要同步的数据库,同时同步test、mydb库
  6. binlog-ignore-db=mysql #被忽略的数据库
  7. EOF
  8. 生效需要重启MySQL,等会后面再重启
复制代码
 
4、设置从服务

填入刚才再master查询的状态信息
File:mysql-bin.000001
Position:154

  • MASTER_HOST='192.168.1.146', #主服务器的IP
  • MASTER_USER='mysync', #刚才创建同步的用户名
  • MASTER_PASSWORD='Admin_2022', #刚才创建同步的密码
  • MASTER_LOG_FILE='mysql-bin.000001', #日志名称
  • MASTER_LOG_POS=154; #信息位置
  1. cat >>/etc/my.cnf<<EOF
  2. server-id = 2
  3. log-bin = mysql-bin    #主从服务的核心 定义binblog日志的前缀名
  4. #binlog-do-db=test      #需要同步的数据库,如果没有本行,即表示同步所有的数据库
  5. #binlog-do-db=mydb      #需要同步的数据库,同时同步test、mydb库
  6. binlog-ignore-db=mysql #被忽略的数据库
  7. EOF
  8. 生效需要重启MySQL,等会后面再重启
复制代码
 


六、新建数据库测试

上面bin-log设置的是默认同步所有数据库,除了MySQL库。
做一个测试,在主节点新建一个subsea的测试库,看是否会同步在从节点上。

  • 在主节点创建一个数据库,导入一个sql,创建一些表


  • 主节点查询matser状态,发现position数值已经变了
mysql> show master status;


  • 从节点查询数据库是否增加,已经多了subsea库


  • 从节点查询slave状态,成功同步
mysql> show slave status;

七、补充说明

1、启动顺序
  1. mysql -u root -p
  2. mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.146' IDENTIFIED BY '12345678';
  3. mysql> flush privileges;
复制代码
 
2、停止顺序
  1. 重启MySQL
  2. systemctl restart mysqld
  3. systemctl status mysqld
  4. 配置服务
  5. mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.146',MASTER_USER='mysync',MASTER_PASSWORD='Admin_2022',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
  6. 开启服务
  7. mysql> start slave;
  8. mysql> show slave status;
复制代码
 
3、存储目录

MySQL存储目录:中间改了目录,后续数据库也会存储再这
  /data/mysql
默认配置文件my.cnf:
  /etc/my.cnf
log-bin也再/data/mysql下:
  /data/mysql/mysql-bin.000001
  /data/mysql/mysql-bin.index
日志查看:
  /var/log/mysqld.log
  systemctl status mysqld
  journalctl -xu mysqld
其他一些补充配置

  https://blog.csdn.net/justlpf/article/details/82908740
出处:https://home.cnblogs.com/u/subsea/博客园主页:https://www.cnblogs.com/subsea/CSDN主页:https://blog.csdn.net/SUBSEA123/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表