首页 > 数据库 >MySQL在线实现主从配置

MySQL在线实现主从配置

时间:2022-09-22 01:33:33浏览次数:100  
标签:在线 -- 备份 MySQL mysqld mysql var root 主从

前提是主库的MySQL开启了Binlog,不然需要修改配置,然后重启MySQL

1.主库配置

[mysqld]
max_allowed_packet=1024M
server-id=1
log-bin=mysql-bin
binlog_format=row

# 必须为FULL,MySQL-5.7后才有该参数
binlog_row_image  = FULL
expire_logs_days  = 15

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2.从库配置

[mysqld]
max_allowed_packet=1024M
server-id=2
log-bin=mysql-bin
binlog_format=row

# 必须为FULL,MySQL-5.7后才有该参数
binlog_row_image  = FULL
expire_logs_days  = 15

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

3.xtrabackup安装

3.1 Xtrabackup介绍

Xtrabackup中主要包含两个工具:
xtrabackup:是用于热备innodb,xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

#常用选项:  
   --host    		指定主机
   --user     		指定用户名
   --password  		指定密码
   --port   	    指定端口
   --databases    	指定数据库
   --incremental 	创建增量备份
   --incremental-basedir 	 指定包含完全备份的目录
   --incremental-dir   	     指定包含增量备份的目录   
   --apply-log        	     对备份进行预处理操作             
   --defaults-file=/etc/my.cnf  指定的备份数据的配置文件
# 一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
   --redo-only      不回滚未提交事务
   --copy-back     恢复备份目录

3.2 下载地址

MySQL版本不同,对应的xtrabackup版本也不同,可以自己选择下载,注意选择Percona XtraBackup
https://www.percona.com/downloads/

3.3 安装

方式一:通过yum安装,yum安装支持的版本是MySQL5.6.24,不知道是否支持5.7.

yum install xtrabackup
 xtrabackup -v #查看版本

注意安装的版本,如下提示即支持5.6
xtrabackup version 2.3.6 based on MySQL server 5.6.24 Linux (x86_64) (revision id: )

方式二:通过自己下载rpm包安装。
由于我使用的MySQL是5.7版本的,所以使用该安装包。

下载地址:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

yum -y install rsync perl l perl-Digest-MD5  #需要先安装依赖
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

4. 全量备份以及配置

#全量备份主库
innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password='root' --parallel=4  /root/mysql_back/

#copy备份文件到从库主机
scp -r mysql_back root@hadoop201:/root/mysql_back/

#进入从库所在主机,停止从库,移除data目录
systemctl stop mysqld
cd /root/mysql_back/
mv /var/lib/mysql /var/lib/mysql_old

#应用日志
innobackupex --use-memory=1G --apply-log /root/mysql_back/2022-09-22_00-18-44/

#恢复数据到从库
innobackupex --defaults-file=/etc/my.cnf --move-back /root/mysql_back/2022-09-22_00-18-44/

#修改从库data目录属主,启动从库
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

如果启动systemctl start mysqld报错,查看日志信息:InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions
请检查vi /etc/selinux/config
将SELINUX=enforcing 改为 SELINUX=disabled,设置后需要重启才能生效。
临时生效办法:setenforce 0 #临时关闭,重启后又会打开。

5. 主从配置

#主库创建slave账号
mysql -u root -p
GRANT REPLICATION SLAVE ON  *.*  TO  'rep_user'@'%' IDENTIFIED BY 'rep_user';

flush privileges;


#从库操作,查看binlog位置,启动从库slave进程
cat /root/mysql_back/2022-09-22_00-18-44/xtrabackup_binlog_info

#启动从库slave进程
mysql -u root  -p
CHANGE MASTER TO MASTER_HOST='192.168.80.200',MASTER_PORT=3306, MASTER_USER='rep_user',MASTER_PASSWORD='rep_user',MASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=924757;

start slave;
show slave status\G;

6. 测试

标签:在线,--,备份,MySQL,mysqld,mysql,var,root,主从
From: https://www.cnblogs.com/30go/p/16717791.html

相关文章

  • Gorm 操作mysql
    gorm操作mysql安装:goget-ugorm.io/gorm//gorm要连接数据库首先要导入驱动程序:import_"github.com/go-sql-driver/mysql"为了方便,grom包装一些驱动:"gorm.......
  • python-mysql 批量造数据
    importpymysqldb=pymysql.connect(host="124.70.xxx.xxx",user="root",password="3xxxx",database="novel")mycursor=db.cursor()phone=......
  • MYSQL8.0 忘记密码
    1、关闭MySQL服务,以管理员身份运行cmd,输入netstopMySQL(服务名) 2、跳过权限验证,mysqld--console--skip-grant-tables--shared-memory3、以管理员身份运行cmd,新开一......
  • MySQL知识点
    VARCHAR、CHARVARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用1字节表示,否则使用2字节表示。VARCHAR存储的内容超出设置的长度时,内容会被截断。CHA......
  • MySQL 常用30种SQL查询语句优化方法
    1、应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列......
  • 单细胞在线课程分享
    单细胞在线课程分享1.导读​ 本文主要分享哈弗大学的单细胞数据分析课程,该课程提供了实验设计,表达矩阵生成,QC指标评估,细胞聚类分析等课程以供学习。2.学习目标了......
  • 【整理】jenkins插件安装的几种方式(在线安装、离线安装)
    整理参考:https://blog.csdn.net/qq_35472206/article/details/1260495741、在线安装:安装jenkins后,初次启动的时候安装插件安装推荐的插件,或者选择插件安装 2、在线安......
  • springboot+Flink(读取kafka并存入Mysql)20220921
    1、mysql数据库test 2、kafka创建主题student  3、pom.xml<properties><java.version>1.8</java.version><project.build.sourceEncod......
  • 本地windows上的SQLog 连接内网 docker上的mysql
    1进入docker记下我的映射端口号12345  dockerexec-itda9aad4acad8sh 2登陆账号mysql-uroot-h127.0.0.1-P3306-p密码默认123456 3开启远......
  • MySQL索引查询条件使用函数导致索引失效
     索引失效EXPLAINSELECTdt.nameASdeviceName,su.`name`ASuserName,date_format(co.upload_time,'%Y%m%d')astimeFROMtb_cust_ordercoI......