8人参与 • 2025-03-05 • Mysql
(172.25.0.19与172.25.0.20均部署安装并启动)
[root@qywlaq_vmc4234 ~]# hostnamectl static hostname: qywlaq_vmc4234 icon name: computer-vm chassis: vm machine id: cd3605d12efd430fb723eb507cf5ce3b boot id: 00f929e5510944efb40d53ef55d92a49 virtualization: kvm operating system: centos linux 7 (core) cpe os name: cpe:/o:centos:centos:7 kernel: linux 3.10.0-1160.el7.x86_64 architecture: x86-64 [root@qywlaq_vmc4234 ~]# ll -rw-r--r-- 1 citc unicom 26658592 12月 25 17:02 mysql-community-client-5.7.35-1.el7.x86_64.rpm -rw-r--r-- 1 citc unicom 317800 12月 25 17:03 mysql-community-common-5.7.35-1.el7.x86_64.rpm -rw-r--r-- 1 citc unicom 2473348 12月 25 17:03 mysql-community-libs-5.7.35-1.el7.x86_64.rpm -rw-r--r-- 1 citc unicom 1263816 12月 26 14:35 mysql-community-libs-compat-5.7.35-1.el7.x86_64.rpm -rw-r--r-- 1 citc unicom 182213816 12月 25 17:05 mysql-community-server-5.7.35-1.el7.x86_64.rpm # 安装rpm包 [root@qywlaq_vmc4234 ~]# yum localinstall -y *.rpm # 启动并设置开启自启 [root@qywlaq_vmc4234 ~]# systemctl enable --now mysqld [root@qywlaq_vmc4234 citc]# systemctl status mysqld ● mysqld.service - mysql server loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) active: active (running) since 三 2025-02-26 12:24:03 cst; 4min 26s ago docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html process: 8441 execstart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $mysqld_opts (code=exited, status=0/success) process: 8374 execstartpre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/success) main pid: 8444 (mysqld) tasks: 27 memory: 289.2m cgroup: /system.slice/mysqld.service └─8444 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid 2月 26 12:23:57 qywlaq_vmc4234 systemd[1]: starting mysql server... 2月 26 12:24:03 qywlaq_vmc4234 systemd[1]: started mysql server. # 获取初始密码 [root@qywlaq_vmc4234 citc]# sudo grep 'temporary password' /var/log/mysqld.log 2025-02-26t04:23:59.794639z 1 [note] a temporary password is generated for root@localhost: ilm3/)ya6vmh # 登录 [root@qywlaq_vmc4234 citc]# mysql -u root -p'ilm3/)ya6vmh' mysql: [warning] using a password on the command line interface can be insecure. welcome to the mysql monitor. commands end with ; or \g. your mysql connection id is 2 server version: 5.7.35 copyright (c) 2000, 2021, oracle and/or its affiliates. oracle is a registered trademark of oracle corporation and/or its affiliates. other names may be trademarks of their respective owners. type 'help;' or '\h' for help. type '\c' to clear the current input statement. mysql> alter user 'root'@'localhost' identified by '8th3xy]:na'; -- 修改root密码 query ok, 0 rows affected (0.00 sec) mysql> flush privileges; -- 刷新权限以使修改立即生效 query ok, 0 rows affected (0.01 sec)
# 此配置文件中追加下述配置 [root@qywlaq_vmc4234 ~]# vi /etc/my.cnf [mysqld] # 基本配置 server-id = 1 # 每个实例的 server-id 必须唯一 log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志 binlog_format = row # 推荐使用 row 格式 expire_logs_days = 7 # 自动清理 7 天前的日志 max_binlog_size = 100m # 每个二进制日志文件的最大大小 # 双主复制配置 log_slave_updates = 1 # 从库记录二进制日志(必须启用) auto_increment_increment = 2 # 自增步长 auto_increment_offset = 1 # 自增起始值(实例 1 为 1,实例 2 为 2) # 复制过滤(可选) replicate-do-db = my_database # 只复制指定的数据库 replicate-ignore-db = mysql # 忽略系统库 # 其他配置 bind-address = 0.0.0.0 # 允许远程连接
重启mysql
[root@qywlaq_vmc4234 ~]# systemctl restart mysqld
# 此配置文件中追加下述配置 [root@qywlaq_vmc1091 ~]# vi /etc/my.cnf [mysqld] # 基本配置 server-id = 2 # 每个实例的 server-id 必须唯一 log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志 binlog_format = row # 推荐使用 row 格式 expire_logs_days = 7 # 自动清理 7 天前的日志 max_binlog_size = 100m # 每个二进制日志文件的最大大小 # 双主复制配置 log_slave_updates = 1 # 从库记录二进制日志(必须启用) auto_increment_increment = 2 # 自增步长 auto_increment_offset = 2 # 自增起始值(实例 1 为 1,实例 2 为 2) # 复制过滤(可选) replicate-do-db = my_database # 只复制指定的数据库 replicate-ignore-db = mysql # 忽略系统库 # 其他配置 bind-address = 0.0.0.0 # 允许远程连接
重启mysql
[root@qywlaq_vmc1091 ~]# systemctl restart mysqld
在每个 mysql 实例上创建一个用于复制的用户。
mysql> create user 'replication'@'172.25.0.20' identified by '@2x0wzy/rq'; query ok, 0 rows affected (0.01 sec) mysql> grant replication slave on *.* to 'replication'@'172.25.0.20'; query ok, 0 rows affected (0.00 sec) mysql> flush privileges; query ok, 0 rows affected (0.01 sec)
查询用户
mysql> select user, host from mysql.user; +---------------+-------------+ | user | host | +---------------+-------------+ | replication | 172.25.0.20 | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-------------+ 4 rows in set (0.00 sec)
mysql> create user 'replication'@'172.25.0.19' identified by '@2x0wzy/rq'; query ok, 0 rows affected (0.00 sec) mysql> grant replication slave on *.* to 'replication'@'172.25.0.19'; query ok, 0 rows affected (0.00 sec) mysql> flush privileges; query ok, 0 rows affected (0.00 sec)
查询用户
mysql> select user, host from mysql.user; +---------------+-------------+ | user | host | +---------------+-------------+ | replication | 172.25.0.19 | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-------------+ 4 rows in set (0.00 sec)
在每个实例上配置对方为主库。
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 964 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
change master to master_host='172.25.0.20', master_user='replication', master_password='@2x0wzy/rq', master_log_file='mysql-bin.000002', -- 替换为实例 2 的当前 binlog 文件 master_log_pos=1784; -- 替换为实例 2 的当前 binlog 位置 start slave;
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 964 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
change master to master_host='172.25.0.19', master_user='replication', master_password='@2x0wzy/rq', master_log_file='mysql-bin.000002', -- 替换为实例 1 的当前 binlog 文件 master_log_pos=1784; -- 替换为实例 1 的当前 binlog 位置 start slave;
在每个实例上执行以下命令,检查复制状态:
show slave status\g;
确保以下字段的值为 yes
:
slave_io_running
slave_sql_running
创建测试数据库和表:
create database test_db; use test_db; create table test_table ( id int auto_increment primary key, name varchar(50) ) engine=innodb;
插入数据:
insert into test_table (name) values ('server a data');
检查数据是否同步:
use test_db; select * from test_table;
应该能看到 server a data
。
插入数据:
insert into test_table (name) values ('server b data');
检查数据是否同步:
use test_db; select * from test_table;
table (name) values (‘server a data');
在 server b 上操作:
检查数据是否同步:
use test_db; select * from test_table;
应该能看到 server a data。
插入数据:
insert into test_table (name) values (‘server b data');
回到 server a 上操作:
检查数据是否同步:
use test_db; select * from test_table;
应该能看到 server b data。
到此这篇关于mysql5.7.35双主搭建的实现的文章就介绍到这了,更多相关mysql双主搭建内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论