首页 > 数据库 >MySQL主从复制

MySQL主从复制

时间:2024-03-28 17:56:22浏览次数:30  
标签:主从复制 etc MySQL server application master mysql

目录

一、主从复制的原理

  1. master服务器将数据的改变记录二进制日志,当master上的数据发生改变时,则将其改变写入二进制日志中;
  2. salve服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件;
  3. 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中;
  4. 从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致;
  5. 最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

h5ikgl3t0m

二、搭建主从复制(一主一从)

涉及主机:

主机名 IP地址
db01(master) 192.168.112.40
db02(slave) 192.168.112.50

1、两台主机安装MySQL

#二进制安装
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
tar xzvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
mkdir /application
mv mysql-5.6.40-linux-glibc2.12-x86_64 /application/mysql-5.6.40
ln -s /application/mysql-5.6.40/ /application/mysql
cd /application/mysql/support-files/
\cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
cd /application/mysql/scripts
useradd mysql -s /sbin/nologin -M
yum -y install autoconf
cd /application/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/application/mysql --data=/application/mysql/data
echo 'export PATH="/application/mysql/bin:$PATH"' >> /etc/profile.d/mysql.sh
source /etc/profile
sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
#指定MySQL安装根目录以及数据目录
vim /etc/my.cnf
basedir = /application/mysql/
datadir = /application/mysql/data
#设置密码
mysqladmin -uroot password '123'

2、修改配置文件

vim /etc/my.cnf
#主库
server_id=1
log_bin=mysql-bin
binlog_format=row
#从库
server_id=2

3、创建主从复制用户

#登录数据库
[root@db01 ~]# mysql -uroot -p123
#创建slave用户
mysql> grant replication slave on *.* to slave@'192.168.112.%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

4、主从库重启并验证server_id

主从库重启

/etc/init.d/mysqld restart
#遇到重启失败
[root@db02 ~]# /etc/init.d/mysqld restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/application/mysql/data/db02.err'.
...........^C
[root@db02 ~]#
[root@db02 ~]# mysqladmin -uroot -p123 shutdown
Warning: Using a password on the command line interface can be insecure.
[root@db02 ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!

验证server_id

mysql> show variables like "server_id";

image-20240328160505991

验证主库的binlog是否开启

mysql> show variables like "%bin%";

image-20240328160818004

5、配置从库与主库的复制关系

#从库
change master to
master_host='192.168.112.40',
master_user='slave',
master_password='123',
master_log_file='mysql-bin.000001',
master_log_pos=120;

start slave;
show slave status\G;

主库使用show master status;

查看master_log_file和master_log_pos

image-20240328161815448

image-20240328161610760

image-20240328164049002

6、验证主从复制

目前两个数据库数据是一致的

image-20240328164231309

主库创建t1表并插入数据

image-20240328164900702

可以看到从库也同步复制了主库更新的数据

image-20240328164954841

至此主从复制配置完成

标签:主从复制,etc,MySQL,server,application,master,mysql
From: https://www.cnblogs.com/misakivv/p/18102266

相关文章

  • MySQL各类查询语句DQL——聚合函数
    插入数据insertintostudentvalues(0,'2024-02-2510:10:10','赵灵儿','123','15612345678',16,'女','逍遥哥哥,你终于找到我了。');insertintostudentvalues(0,'2024-02-2510:10:10','王语嫣','123&......
  • MySQL学习必备SQL_DDL_DML_DQL
     MySQL创建数据库需要自行创建,数据库名称可以为【schoolDB】,字符集【utf8】,排序规则【utf8_general_ci】,1.学生表DDLCREATETABLE`student`( `id`INT(11)NOTNULLAUTO_INCREMENTCOMMENT'学号', `createDate`datetimeDEFAULTNULL, `userName`VARCHAR(......
  • MySQL学习必备查询语句like_between and_in
     MySQL创建数据库需要自行创建数据库名称可以为【schoolDB】,字符集【utf8】,排序规则【utf8_general_ci】,建表操作:CREATETABLE`student`( `id`INT(11)NOTNULLAUTO_INCREMENTCOMMENT'学号', `createDate`datetimeDEFAULTNULL, `userName`VARCHAR(20......
  • MySQL各类查询语句DQL——like_between and_null_in
    创建数据库CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`age`tinyin......
  • MySQL各类查询语句DQL--like_in_between_and
    建表语句CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENT,`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`age`tinyint(3)DEFAULTNULL,......
  • MySQL各类查询语句DQL--like in between...and
    数据库名称可以为【schoolDB】,字符集【utf8】,排列规则【utf8_general_ci】建立表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DE......
  • MySQL索引18连问,谁能顶住
    前言过完这个节,就要进入金银季,准备了18道MySQL索引题,一定用得上。作者:感谢每一个支持:github1.索引是什么索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录,帮助定位数据位置。索引是一个文件,它要占用物理空间。2.MySQL索引有哪些......
  • (毕业设计)基于Java+Vue+Mysql的网上订餐系统
    前言:网上订餐系统是一个综合性的在线服务平台,旨在为用户提供便捷的点餐、支付、配送等一体化服务。下面是对系统列出的各个功能模块的详细解释:一、个人中心个人中心是用户登录后的主要界面,展示用户的个人信息、订单记录、优惠券、积分等。用户可以在此查看并管理自己的账户......
  • (毕业设计)基于Java+Vue+Mysql的大学生租房平台
     前言:大学生租房平台是一个专门为大学生提供租房服务的在线平台。这个平台不仅简化了租房流程,还提供了多种功能,如房源搜索、在线沟通、合同签订等,让大学生能够轻松、安全地找到适合自己的房源。以下是针对系统列出的七个平台功能的详细解释:一、个人中心个人中心是用户在使......
  • (毕业设计)基于Java+Vue+Mysql的学生心理咨询评估系统
     前言:学生心理咨询评估系统是一个集成了多个功能模块的综合性系统,旨在为学生提供心理咨询服务和评估。以下是对系统的五个主要功能模块的详细解释:一、个人中心个人中心是用户的个人空间,主要用于展示和管理用户的基本信息、心理评估记录、咨询历史等。学生可以在这里查看自......