Home Database Mysql Tutorial MySQL Cluster-备份恢复初步测试_MySQL

MySQL Cluster-备份恢复初步测试_MySQL

Jun 01, 2016 pm 01:30 PM
database

bitsCN.com

MySQL Cluster-备份恢复初步测试

 

sql节点上面录入数据:

 建立测试的数据库和表

 

 

 CREATE DATABASE bg;

 

 CREATE TABLE bgt1 (id INT,`name` VARCHAR(20),PRIMARY KEY(`id`))ENGINE=NDBCLUSTER;

 

 INSERT INTO bgt1 VALUES(1,'zhang1'),(2,'zhang2'),(3,'zhang3'),(4,'zhang4');

  

 8.2 管理节点上面,开始备份 

ndb_mgm> start backup

Waiting for completed, this may take several minutes

Node 4: Backup 1 started from node 1

Node 4: Backup 1 started from node 1 completed

StartGCP: 184725 StopGCP: 184772

#Records: 722078 #LogRecords: 0

Data: 287345616 bytes Log: 0 bytes

ndb_mgm> 

 

 

 8.3 再次插入几条数据(为了保持和正式环境尽可能接近,在插入数据中间穿插了flush logs操作!)

INSERT INTO bgt1 VALUES(5,'zhang5'),(6,'zhang6'); 

flush logs;

INSERT INTO bgt1 VALUES(7,'zhang7'),(8,'zhang8');

     

8.4 删掉SQL节点的数据。

mysql> drop database bg;

Query OK, 2 rows affected (6.16 sec)

 

8.5 关闭MYSQLD服务器。

[root@banggo data]# /etc/rc.d/init.d/mysqld stop

Shutting down MySQL......120718 18:58:11 mysqld_safe mysqld from pid file /usr/local/mysql/data/banggo.local.pid ended

  [确定]

[1]+  Done                    /usr/local/mysql/bin/mysqld_safe

[root@banggo data]# 

[root@banggo data]# /etc/rc.d/init.d/mysqld stop

Shutting down MySQL....                                    [确定]

[root@banggo data]# 

 

8.6 重新启动节点

ndb_mgm> shutdown

Node 4: Cluster shutdown initiated

Node 4: Node shutdown completed.

2 NDB Cluster node(s) have shutdown.

Disconnecting to allow management server to shutdown.

ndb_mgm> exit

[root@banggo mysql-cluster]# ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini --reload

MySQL Cluster Management Server mysql-5.5.19 ndb-7.2.4

 

 

8.7 重新启动数据节点

ndbd --initial   

 

 

8.8 在数据节点上面进行恢复。

/home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/

其中backup_path 在默认的数据节点的根目录下面(找了很久,一开始以为在配置文件里面)

 

第一步骤 -m操作

   [root@test-db-20053 BACKUP-1]# /home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/

Nodeid = 4

Backup Id = 1

backup path = /var/lib/mysql-cluster/BACKUP/BACKUP-1/

Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1.4.ctl'

File size 61160 bytes

Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4

Stop GCP of Backup: 184771

Connected to ndb!!

Successfully restored table `test/def/t2`

Successfully restored table event REPL$test/t2

Successfully restored table `bg/def/#sql-303d_2`

Successfully restored table event REPL$bg/#sql-303d_2

Successfully restored table `bg/def/#sql-51f0_3`

Successfully restored table event REPL$bg/#sql-51f0_3

Successfully restored table `test/def/t11`

Successfully restored table event REPL$test/t11

Successfully restored table `ndb/def/ndborder_goods`

Successfully restored table event REPL$ndb/ndborder_goods

Successfully restored table `bg/def/bgt1`

Successfully restored table event REPL$bg/bgt1

Successfully restored table `test/def/ndborder_info_history`

Successfully restored table event REPL$test/ndborder_info_history

Successfully restored table `mysql/def/ndb_schema`

Successfully restored table event REPL$mysql/ndb_schema

Successfully restored table `mysql/def/ndb_apply_status`

Successfully restored table event REPL$mysql/ndb_apply_status

Successfully restored table `ndb/def/ndbtest`

Successfully restored table event REPL$ndb/ndbtest

Successfully created index `PRIMARY` on `ndborder_info_history`

Successfully created index `uniq_order_os` on `ndborder_goods`

Successfully created index `is_update` on `ndborder_info_history`

Successfully created index `PRIMARY` on `#sql-51f0_3`

Successfully created index `sku_sn` on `ndborder_goods`

Successfully created index `PRIMARY` on `bgt1`

Successfully created index `exchange_from` on `ndborder_goods`

Successfully created index `addtime` on `ndborder_info_history`

Successfully created index `relating_return_sn` on `ndborder_info_history`

Successfully created index `PRIMARY` on `ndborder_goods`

Successfully created index `order_from` on `ndborder_info_history`

Successfully created index `order_out_sn` on `ndborder_info_history`

Successfully created index `PRIMARY` on `#sql-303d_2`

Successfully created index `order_status` on `ndborder_info_history`

Successfully created index `user_id` on `ndborder_info_history`

Successfully created index `uniq_order_os$unique` on `ndborder_goods`

Successfully created index `order_sn` on `ndborder_goods`

 

 

NDBT_ProgramExit: 0 - OK

 

 

[root@test-db-20053 BACKUP-1]# 

8.9 第二步骤 -r操作(如果有N个node,则需要执行N次)

[root@test-db-20053 BACKUP-1]# /home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -r --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/

Nodeid = 4

Backup Id = 1

backup path = /var/lib/mysql-cluster/BACKUP/BACKUP-1/

Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1.4.ctl'

File size 61160 bytes

Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4

Stop GCP of Backup: 184771

Connected to ndb!!

Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1-0.4.Data'

File size 287834112 bytes

_____________________________________________________

Processing data in table: test/def/t2(20) fragment 0

_____________________________________________________

Processing data in table: bg/def/#sql-303d_2(34) fragment 0

_____________________________________________________

Processing data in table: bg/def/#sql-51f0_3(32) fragment 0

_____________________________________________________

Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0

_____________________________________________________

Processing data in table: test/def/t11(11) fragment 0

_____________________________________________________

Processing data in table: ndb/def/ndborder_goods(12) fragment 0

_____________________________________________________

Processing data in table: ndb/def/NDB$BLOB_12_13(13) fragment 0

_____________________________________________________

Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 0

_____________________________________________________

Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0

_____________________________________________________

Processing data in table: sys/def/SYSTAB_0(2) fragment 0

_____________________________________________________

Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0

_____________________________________________________

Processing data in table: bg/def/bgt1(36) fragment 0

_____________________________________________________

Processing data in table: test/def/ndborder_info_history(21) fragment 0

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)

在执行 -r操作的时候 报错

 

【ok】飞鸿大哥说是由于REDO log 文件太小了要加大,不影响恢复效果。参考了http://bugs.mysql.com/bug.php?id=19651 这上面的人也这么讲。

 

 

 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndb                |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.00 sec)

-- 没有库?看来要重建了

 

 

mysql> create database bg; -- 重建

Query OK, 1 row affected (0.06 sec)

 

 

mysql> use bg

Database changed

mysql> show tables; -- ok,看下表

+--------------+

| Tables_in_bg |

+--------------+

| bgt1         |

+--------------+

1 row in set (0.00 sec)

 

 

mysql> select * from bgt1; --数据恢复过来了

+----+--------+

| id | name   |

+----+--------+

|  3 | zhang3 |

|  1 | zhang1 |

|  2 | zhang2 |

|  4 | zhang4 |

+----+--------+

4 rows in set (0.01 sec)

 

 

8.10 找一个mysqld节点,在管理节点进入单用户模式,然后启动sql节点,启动该mysqld节点,并登陆找到最大的epoch的值

ndb_mgm> ENTER SINGLE USER MODE 10;

Single user mode entered

Access is granted for API node 10 only.

ndb_mgm> 

 

mysql> SELECT @LASTEPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;

+------------------------+

| @LASTEPOCH:=MAX(epoch) |

+------------------------+

|        793593992183807 |

+------------------------+

1 row in set (0.04 sec)

 

根据epoch的值,找到二进制日志的位置以及文件名

 

 

mysql> SELECT POSITION, @FIRSTFILE:=FILE

-> 

-> FROM mysql.ndb_binlog_index

-> 

-> WHERE epoch > @LASTEPOCH

-> 

-> ORDER BY epoch ASC

-> 

-> LIMIT 1;

Empty set (0.03 sec)

 

8.11 根据时间点恢复

找出恢复的时候需要用到的除第一个日志文件以外的其他的二进制日志文件

SELECT DISTINCT File 

FROM mysql.ndb_binlog_index

WHERE epoch > @LASTEPOCH 

AND File @FIRSTFILE 

ORDER BY File;

 

 

然后进行二进制日志的恢复:

mysqlbinlog -H --set-charset="utf8" -D --start-position=829 ./mysql-bin.000012 | grep -v "RELOAD DATABASE" |mysql bg

mysqlbinlog -H --set-charset="utf8" -D --stop-datetime="2012-07-18 13:30:00" ./mysql-bin.0000013 | grep -v "RELOAD DATABASE" |mysql  bg

 

 

恢复完成后,退出单用户模式,并启动另外一个sql节点

ndb_mgm> EXIT SINGLE USER MODE;

Exiting single user mode in progress.

Use ALL STATUS or SHOW to see when single user mode has been exited.

ndb_mgm>

 

 

进入mysql节点,查到数据已经恢复了。

bitsCN.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How does Go language implement the addition, deletion, modification and query operations of the database? How does Go language implement the addition, deletion, modification and query operations of the database? Mar 27, 2024 pm 09:39 PM

Go language is an efficient, concise and easy-to-learn programming language. It is favored by developers because of its advantages in concurrent programming and network programming. In actual development, database operations are an indispensable part. This article will introduce how to use Go language to implement database addition, deletion, modification and query operations. In Go language, we usually use third-party libraries to operate databases, such as commonly used sql packages, gorm, etc. Here we take the sql package as an example to introduce how to implement the addition, deletion, modification and query operations of the database. Assume we are using a MySQL database.

How does Hibernate implement polymorphic mapping? How does Hibernate implement polymorphic mapping? Apr 17, 2024 pm 12:09 PM

Hibernate polymorphic mapping can map inherited classes to the database and provides the following mapping types: joined-subclass: Create a separate table for the subclass, including all columns of the parent class. table-per-class: Create a separate table for subclasses, containing only subclass-specific columns. union-subclass: similar to joined-subclass, but the parent class table unions all subclass columns.

iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos Jul 18, 2024 am 05:48 AM

Apple's latest releases of iOS18, iPadOS18 and macOS Sequoia systems have added an important feature to the Photos application, designed to help users easily recover photos and videos lost or damaged due to various reasons. The new feature introduces an album called "Recovered" in the Tools section of the Photos app that will automatically appear when a user has pictures or videos on their device that are not part of their photo library. The emergence of the "Recovered" album provides a solution for photos and videos lost due to database corruption, the camera application not saving to the photo library correctly, or a third-party application managing the photo library. Users only need a few simple steps

Detailed tutorial on establishing a database connection using MySQLi in PHP Detailed tutorial on establishing a database connection using MySQLi in PHP Jun 04, 2024 pm 01:42 PM

How to use MySQLi to establish a database connection in PHP: Include MySQLi extension (require_once) Create connection function (functionconnect_to_db) Call connection function ($conn=connect_to_db()) Execute query ($result=$conn->query()) Close connection ( $conn->close())

How to handle database connection errors in PHP How to handle database connection errors in PHP Jun 05, 2024 pm 02:16 PM

To handle database connection errors in PHP, you can use the following steps: Use mysqli_connect_errno() to obtain the error code. Use mysqli_connect_error() to get the error message. By capturing and logging these error messages, database connection issues can be easily identified and resolved, ensuring the smooth running of your application.

An in-depth analysis of how HTML reads the database An in-depth analysis of how HTML reads the database Apr 09, 2024 pm 12:36 PM

HTML cannot read the database directly, but it can be achieved through JavaScript and AJAX. The steps include establishing a database connection, sending a query, processing the response, and updating the page. This article provides a practical example of using JavaScript, AJAX and PHP to read data from a MySQL database, showing how to dynamically display query results in an HTML page. This example uses XMLHttpRequest to establish a database connection, send a query and process the response, thereby filling data into page elements and realizing the function of HTML reading the database.

Tips and practices for handling Chinese garbled characters in databases with PHP Tips and practices for handling Chinese garbled characters in databases with PHP Mar 27, 2024 pm 05:21 PM

PHP is a back-end programming language widely used in website development. It has powerful database operation functions and is often used to interact with databases such as MySQL. However, due to the complexity of Chinese character encoding, problems often arise when dealing with Chinese garbled characters in the database. This article will introduce the skills and practices of PHP in handling Chinese garbled characters in databases, including common causes of garbled characters, solutions and specific code examples. Common reasons for garbled characters are incorrect database character set settings: the correct character set needs to be selected when creating the database, such as utf8 or u

How to connect to remote database using Golang? How to connect to remote database using Golang? Jun 01, 2024 pm 08:31 PM

Through the Go standard library database/sql package, you can connect to remote databases such as MySQL, PostgreSQL or SQLite: create a connection string containing database connection information. Use the sql.Open() function to open a database connection. Perform database operations such as SQL queries and insert operations. Use defer to close the database connection to release resources.

See all articles