热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL搭建主从复制

方式一:使用xtrabackup备份搭建目前实例mysql3306和MySQL3307的数据如下mysql3306showdatabases;+-----------------

方式一:使用xtrabackup备份搭建

目前实例mysql3306和MySQL3307的数据如下

mysql3306> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| gtid |
| mysql |
| performance_schema |
| sys |
| test |
| world |
+--------------------+
mysql3307> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

1.备份mysql3306数据库

innobackupex --user=root --password='' -S /tmp/mysql.sock --no-timestamp /data/backup/full

(--no-timestamp 该选项会使得备份文件直接备份在/data/backup/full下,如果不加该参数,会直接在full目录下创建一个以时间命名的目录,存放全备文件)

备份后的文件如下:

[root@localhost full]# ll
total 12344
-rw-r-----. 1 root root 487 Feb 18 21:50 backup-my.cnf
drwxr-x---. 2 root root 4096 Feb 18 21:50 gtid
-rw-r-----. 1 root root 391 Feb 18 21:50 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Feb 18 21:50 ibdata1
drwxr-x---. 2 root root 4096 Feb 18 21:50 mysql
drwxr-x---. 2 root root 4096 Feb 18 21:50 performance_schema
drwxr-x---. 2 root root 12288 Feb 18 21:50 sys
drwxr-x---. 2 root root 4096 Feb 18 21:50 test
drwxr-x---. 2 root root 4096 Feb 18 21:50 world
-rw-r-----. 1 root root 62 Feb 18 21:50 xtrabackup_binlog_info (备份时刻的binlog位置)
-rw-r-----. 1 root root 113 Feb 18 21:50 xtrabackup_checkpoints
[root@localhost full]# cat xtrabackup_checkpoints
backup_type = full-backuped 备份类型为全备
from_lsn = 0 上次备份到的LSN号(对于全备就是从0开始)
to_lsn = 3634657 备份开始时间(ckpt)点数据页的LSN
last_lsn = 3634666 份结束后,redo日志最终的LSN
compact = 0
recover_binlog_info = 0
(1)备份时刻,立即将已经commit过的,内存中的数据页刷新到磁盘(CKPT).开始备份数据,数据文件的LSN会停留在to_lsn位置。
(2)备份时刻有可能会有其他的数据写入,已备走的数据文件就不会再发生变化了。
(3)在备份过程中,备份软件会一直监控着redo的undo,如果一旦有变化会将日志也一并备走,并记录LSN到last_lsn。
从to_lsn ----》last_lsn 就是,备份过程中产生的数据变化.
-rw-r-----. 1 root root 577 Feb 18 21:50 xtrabackup_info
-rw-r-----. 1 root root 2560 Feb 18 21:50 xtrabackup_logfile

2.导出创建库表的语句

[root@localhost full]# mysqldump -uroot -p -S /tmp/mysql.sock -B world gtid test --no-data > /data/3307/data/createtable.sql

检查该文件,导出的只有建表和建库语句,无实际数据

image

--no-data No row information. (不导出数据,有时我们仅仅需要导出表结构,也就是建表语句就行了)


3.在mysql3307中source该文件,将表和库在从库中创建好

image

image


4.将目标库中的表空间删除

mysql> select concat('alter table ',table_schema,'.',table_name,' discard tablespace;') from information_schema.tables where table_schema in ('gtid','test','world') into outfile '/data/3307/data/discard.sql';
Query OK, 4 rows affected (0.00 sec)
mysql> source /data/3307/data/discard.sql;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails ()//有外键约束
Query OK, 0 rows affected (0.00 sec)
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source /data/3307/data/discard.sql;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select * from world.city;
ERROR 1814 (HY000): Tablespace has been discarded for table 'city'//表空间以为删除

5.将备份中的ibd文件全部拷贝到从库data路径

[root@localhost full]# cp gtid/*ibd /data/3307/data/gtid/
cp: cannot stat ‘gtid/*ibd’: No such file or directory
[root@localhost full]#
[root@localhost full]# cp world/*ibd /data/3307/data/world/
[root@localhost full]# cp test/*ibd /data/3307/data/test/
[root@localhost full]# cd /data/3307/data/test
[root@localhost test]# ll
total 112
-rw-r-----. 1 mysql mysql 65 Feb 18 22:03 db.opt
-rw-r-----. 1 mysql mysql 8586 Feb 18 22:03 t4.frm
-rw-r-----. 1 root root 98304 Feb 18 22:08 t4.ibd
修改下权限
chown -R mysql.mysql *


6.将表空间inport

mysql> select concat('alter table ',table_schema,'.',table_name,' import tablespace;') from information_schema.tables where table_schema in ('gtid','test','world') into outfile '/data/3307/data/import.sql';
Query OK, 4 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.02 sec)
Query OK, 0 rows affected, 1 warning (0.02 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected, 1 warning (0.02 sec)
查看下数据
mysql> select count(*) from world.city;
+----------+
| count(*) |
+----------+
| 4079 |
+----------+
mysql> select count(*) from test.t4;
+----------+
| count(*) |
+----------+
| 7 |
+----------+

7.主节点创建用户

grant replication slave on . to repl@'IP' identified by '123';


8.change master to搭建复制关系

image

mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.38',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='123',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000018',
-> MASTER_LOG_POS=194,
-> MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

9.主库创建表,模拟备份后的数据变化

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t4 |
+----------------+
1 row in set (0.00 sec)
mysql> create table t1 (id int,name varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 values (1,'aa'),(2,'bb'),(3,'cc');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)

10.启动备库

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.38
Master_User: repl
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000018
Read_Master_Log_Pos: 649 //跟show master status的position一致
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 775
Relay_Master_Log_File: mysql-bin.000018
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 649
Relay_Log_Space: 986
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 6
Master_UUID: 09dd0d62-8b86-11ec-bd6f-000c29245cff
Master_Info_File: /data/3307/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 09dd0d62-8b86-11ec-bd6f-000c29245cff:8-9
Executed_Gtid_Set: 09dd0d62-8b86-11ec-bd6f-000c29245cff:6-9,
42178851-8ff5-11ec-a8dd-000c29245cff:1-25,
95524dfa-8ff0-11ec-801f-000c29245cff:1
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

image


10.查看从库数据

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| gtid |
| mysql |
| performance_schema |
| sys |
| test |
| world |
+--------------------+
7 rows in set (0.00 sec)
mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1 |
| t4 |
+----------------+
2 rows in set (0.00 sec)
mysql> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
+------+------+
3 rows in set (0.00 sec)

简单的主从搭建完成

推荐阅读
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
author-avatar
空念
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有