Ubuntu 22.04
Sponsored Link

MySQL 8.0 : क्लोन सुविधा का प्रयोग करें2023/09/14

 
MySQL बैकअप लेने के लिए क्लोन फ़ीचर का उपयोग करें जिसे MySQL 8.0.17 पर लागू किया गया है।
[1] क्लोन सुविधा डिफ़ॉल्ट रूप से सक्षम नहीं है, इसलिए इसे सक्षम करें।
root@dlp:~#
mysqld --version

/usr/sbin/mysqld Ver 8.0.30-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
root@dlp:~#
vi /etc/mysql/mysql.conf.d/mysqld.cnf
# [mysqld] अनुभाग में जोड़ें

[mysqld]
.....
.....
plugin-load=mysql_clone.so
# पंक्ति 32 : यदि अन्य होस्ट से क्लोनिंग हो रही है, तो बाइंड एड्रेस बदलें

bind-address            = 0.0.0.0
mysqlx-bind-address     = 127.0.0.1

root@dlp:~#
systemctl restart mysql
# प्लगइन्स दिखाएं

root@dlp:~#
mysql -e "select plugin_name, plugin_status, plugin_type from information_schema.plugins where plugin_name = 'clone';"

Enter password:
+-------------+---------------+-------------+
| plugin_name | plugin_status | plugin_type |
+-------------+---------------+-------------+
| clone       | ACTIVE        | CLONE       |
+-------------+---------------+-------------+
[2] लोकलहोस्ट पर एक निर्देशिका में क्लोन प्राप्त करें।
# क्लोन डेटा के लिए एक निर्देशिका बनाएं

root@dlp:~#
mkdir /home/mysql_backup

root@dlp:~#
chown mysql. /home/mysql_backup

# क्लोनिंग के लिए लक्ष्य निर्देशिका में लिखना AppArmor द्वारा अस्वीकार कर दिया गया है, इसलिए चलने से पहले इसे अनुमति दें

root@dlp:~#
vi /etc/apparmor.d/usr.sbin.mysqld
# mysqld को लिखने की अनुमति देने के लिए लक्ष्य निर्देशिका जोड़ें

/usr/sbin/mysqld {
  .....
  .....
  /home/mysql_backup/ r,
  /home/mysql_backup/** rwk,
}

root@dlp:~#
systemctl restart apparmor
# क्लोन प्राप्त करके चलाएँ
# यदि निर्दिष्ट निर्देशिका फ़ाइल सिस्टम पर पहले से मौजूद है, तो यह त्रुटि होगी,
# इसलिए [directory = ***] अनुभाग के लिए नई निर्देशिका निर्दिष्ट करें

root@dlp:~#
mysql -e "clone local data directory = '/home/mysql_backup/backup01/';"
root@dlp:~#
ll /home/mysql_backup/backup01

total 70692
drwxr-x--- 2 mysql mysql     4096 Sep 28 03:54 '#clone'/
drwxr-x--- 2 mysql mysql     4096 Sep 28 03:54 '#innodb_redo'/
drwxr-x--- 7 mysql mysql     4096 Sep 28 03:54  ./
drwxr-xr-x 3 mysql mysql     4096 Sep 28 03:54  ../
-rw-r----- 1 mysql mysql     4414 Sep 28 03:54  ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Sep 28 03:54  ibdata1
drwxr-x--- 2 mysql mysql     4096 Sep 28 03:54  mysql/
-rw-r----- 1 mysql mysql 26214400 Sep 28 03:54  mysql.ibd
drwxr-x--- 2 mysql mysql     4096 Sep 28 03:54  sys/
drwxr-x--- 2 mysql mysql     4096 Sep 28 03:54  test_database/
-rw-r----- 1 mysql mysql 16777216 Sep 28 03:54  undo_001
-rw-r----- 1 mysql mysql 16777216 Sep 28 03:54  undo_002
[3] [CLONE INSTANCE FROM] का उपयोग करने के लिए, किसी दूरस्थ होस्ट से सीधे क्लोन प्राप्त करना संभव है।
आधिकारिक दस्तावेज़ों पर, क्लोन स्रोत को [Donor] कहा जाता है और क्लोन लक्ष्य को [Recipient] कहा जाता है।
# डोनर होस्ट पर, एक उपयोगकर्ता बनाएं और क्लोन के लिए [BACKUP_ADMIN] विशेषाधिकार जोड़ें

root@dlp:~#
mysql


mysql> create user 'clone_user'@'%' identified by 'password';
Query OK, 0 rows affected (0.09 sec)

mysql> grant BACKUP_ADMIN on *.* to 'clone_user'@'%';
Query OK, 0 rows affected (0.10 sec)

# प्राप्तकर्ता होस्ट पर, एक उपयोगकर्ता बनाएं और क्लोन के लिए [CLONE_ADMIN] विशेषाधिकार जोड़ें

root@node01:~#
mysql


mysql> create user 'clone_user'@'%' identified by 'password';
Query OK, 0 rows affected (0.11 sec)

mysql> grant CLONE_ADMIN on *.* to 'clone_user'@'%';
Query OK, 0 rows affected (0.04 sec)


# प्राप्तकर्ता होस्ट पर, क्लोन कार्य चलाएँ
# क्लोन से पहले, [set global clone_valid_donor_list = (Donor IP address:port)] सेट करें
# क्लोन डेटा को [/var/lib/mysql] के अंतर्गत कॉपी किया गया है
mysql> set global clone_valid_donor_list = '10.0.0.30:3306';
Query OK, 0 rows affected (0.00 sec)

mysql> clone instance from clone_user@10.0.0.30:3306 identified by 'password';
Query OK, 0 rows affected (0.45 sec)

# क्लोन स्थिति की पुष्टि करें
# ठीक है यदि [STATE] [Completed] है
mysql> select STATE from performance_schema.clone_status;
+-----------+
| STATE     |
+-----------+
| Completed |
+-----------+
1 row in set (0.00 sec)


# यदि क्लोन लक्ष्य निर्देशिका निर्दिष्ट करें, तो  [data directory = '***'] जोड़ें
# लेकिन फिर इसे लक्ष्य निर्देशिका जैसे [2], [3] के लिए उपयुक्त अनुमति सेट करने की आवश्यकता है
mysql> clone instance from clone_user@10.0.0.30:3306 identified by 'password' data directory = '/home/mysql_backup/backup01/';
मिलान सामग्री