MySQL Cluster-备份恢复初步测试_MySQL
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
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。

Go 標準ライブラリのデータベース/SQL パッケージを通じて、MySQL、PostgreSQL、SQLite などのリモート データベースに接続できます。データベース接続情報を含む接続文字列を作成します。 sql.Open() 関数を使用してデータベース接続を開きます。 SQL クエリや挿入操作などのデータベース操作を実行します。 defer を使用してデータベース接続を閉じ、リソースを解放します。
