2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
MySQL Bin Log
(द्विनारी वृत्त, binary log) MySQL दत्तांशकोशस्य एकः log सञ्चिका अस्ति या दत्तांशकोशे कृतानि सर्वाणि परिवर्तनानि अभिलेखयतिDML
ऑपरेशन्स् (यथा INSERT, UPDATE, DELETE इत्यादयः), परन्तुSELECT इत्येतत् बहिष्कृतम्प्रतीक्षतुDQL
केवलं पठनीयं संचालनम्। Bin Log MySQL कृते प्रतिकृतिं, पुनर्प्राप्तिः, लेखापरीक्षा च प्राप्तुं महत्त्वपूर्णं साधनम् अस्ति । विस्तरेण पश्यन्तु :MySQL मध्ये DDL, DML, DQL तथा DCL
Bin Log इत्यस्य मुख्यकार्यं भवति: master-slave replication, data recovery, data backup, data subscription च
अनुप्रयोग परिदृश्य | कल्पना | विषय |
---|---|---|
स्वामी-दास प्रतिकृति | मुख्यपुस्तकालयः binlog मध्ये अद्यतनसञ्चालन अभिलेखान् दासपुस्तकालयं प्रति प्रेषयति, तथा च दासपुस्तकालयः binlog पठति SQL कथनानि च निष्पादयति । | ई-वाणिज्यमञ्चः : मुख्यदत्तांशकोशः binlog कृते आदेशसञ्चालनं अभिलेखयति, तथा च सर्वेषां नोड्-सङ्गतिं निर्वाहयितुम् दत्तांशकोशात् आदेशदत्तांशं समन्वययति |
आँकडा पुनर्प्राप्ति | दत्तांशं पुनः प्राप्तुं SQL कथनानि विपर्ययरूपेण निष्पादयितुं binlog अभिलेखानां उपयोगं कुर्वन्तु | वित्तीयप्रणाली : प्रशासकाः आँकडा-अखण्डतां सुनिश्चित्य वित्तीयहानिः परिहरितुं binlog-पार्सिंग् कृत्वा आकस्मिकतया विलोपितान् लेनदेन-अभिलेखान् पुनः प्राप्नुवन्ति । |
data backup इति | Binlog इत्यस्य उपयोगः वृद्धिशील-बैकअप-कृते भवति, बैकअप-समयस्य, स्थानस्य च व्ययस्य रक्षणं करोति | सामाजिकमाध्यममञ्चः : सम्पूर्णदत्तांशकोशस्य पूर्णतया बैकअपं न कृत्वा शीघ्रं नवीनतमस्थितौ पुनर्स्थापनार्थं प्रतिदिनं नियमितरूपेण binlog सञ्चिकानां बैकअपं गृह्यताम्। |
दत्तांशसदस्यता | वास्तविकसमये आँकडाधार-अद्यतन-सञ्चालनस्य निरीक्षणार्थं binlog इत्यस्य उपयोगं कुर्वन्तु | खुदराकम्पनीनां वास्तविकसमये आँकडाविश्लेषणम् : binlog इत्यस्य पार्सिंग् कृत्वा विक्रय-अभिलेख-प्रवेश-सञ्चालनं विक्रय-प्रवृत्ति-विश्लेषणार्थं वास्तविकसमये आँकडा-विश्लेषण-मञ्चे गृहीतं भवति |
एतेषां विशिष्टप्रकरणानाम् माध्यमेन वयं व्यावहारिक-अनुप्रयोगेषु MySQL binlog इत्यस्य महत्त्वं विविधतां च अधिकं स्पष्टतया द्रष्टुं शक्नुमः । binlog कार्यस्य सम्यक् उपयोगः प्रणाल्याः विश्वसनीयतां, पुनर्प्राप्तिक्षमतां, व्यावसायिकप्रतिसादवेगं च बहुधा सुधारयितुं शक्नोति ।
यदा MySQL सर्वरः Bin Log कार्यं सक्षमं करोति तदा दत्तांशकोशस्य सर्वाणि परिवर्तनक्रियाः भविष्यन्तिघटना अभिलेख Bin Log सञ्चिकां प्रति । एतानि घटनानि निष्पादनक्रमेण संगृह्यन्ते, येन निरन्तरं ऑपरेशन लॉग् क्रमः निर्मीयते । एतानि घटनानि पुनः क्रीडितुं शक्यन्ते यदा दत्तांशस्य पुनर्स्थापनं प्रतिलिपिं वा कर्तुं आवश्यकं भवति तदा दत्तांशकोशस्य स्थितिं पुनः निर्मातुं शक्यते ।
MySQL Bin Log इत्यस्य त्रयः अभिलेखस्वरूपाः सन्ति:
निम्नलिखितम् MySQL Bin Log इत्यस्य त्रयः अभिलेखस्वरूपाः सन्ति ये सारणीरूपेण संगठिताः सन्ति:
अभिलेख प्रारूप | वर्णेतु | लाभ | अभावः |
---|---|---|---|
कथन-आधारित-लॉगिंग (SBL) 1.1. | निष्पादितं SQL कथनं स्वयं अभिलेखयन्तु | लॉग् आयतनं लघु भवति तथा च सरल SQL-सञ्चालनानां कृते उपयुक्तम् अस्ति । | केषुचित् सन्दर्भेषु दत्तांशस्य स्थिरतायाः गारण्टी न भवितुं शक्नोति, यथा अनिर्धारितकार्यं (यथा NOW()) । |
पङ्क्ति-आधारित-लॉगिंग (RBL) 1.1. | प्रत्येकस्य दत्तांशपङ्क्तेः विशिष्टपरिवर्तनानि अभिलेखयन्तु | अधिकं सटीकं, जटिलसञ्चालनार्थं प्रतिलिपिकरणार्थं च उपयुक्तम् | बृहत् लॉग् आयतनं, बृहत् डिस्कं तथा नेटवर्क् ओवरहेड् |
मिश्रित लॉगिंग (ML) 1.1. | विशिष्टपरिस्थित्यानुसारं Statement तथा Row मोड् मध्ये स्विच् कुर्वन्तु । | उभयोः लाभं गृहीत्वा | कार्यान्वयनार्थं प्रबन्धनार्थं च तुल्यकालिकरूपेण जटिलम् |
mysql> show variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
6 rows in set, 1 warning (0.00 sec)
Bin Log सक्षमीकरणाय, भवद्भिः MySQL विन्याससञ्चिकां विन्यस्तुं आवश्यकम् (प्रायःmy.cnf
वाmy.ini
) तथा निम्नलिखितविन्यासं कुर्वन्तु : १.
[mysqld]
log-bin=mysql-bin
server-id=1
विन्यासं परिवर्तयित्वा mysql पुनः आरभत ।हेतिSHOW VARIABLES LIKE 'log_bin';
Value मूल्यं ON अस्ति ।
mysql> show variables like "%log_bin%";
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: *** NONE ***
+---------------------------------+--------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------------------------------------------------+
| log_bin | ON |
| log_bin_basename | C:UsershiszmMySQL5.7.26databinlog |
| log_bin_index | C:UsershiszmMySQL5.7.26databinlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+--------------------------------------------------------------------------+
6 rows in set, 1 warning (0.01 sec)
सामान्यं Bin Log विन्यासमापदण्डेषु अन्तर्भवति:
log_bin
: Bin Log सक्षमं कुर्वन्तु।server_id
: सर्वर अद्वितीयपरिचयः, प्रतिकृतिकृते उपयुज्यते ।binlog_format
: Bin Log (STATEMENT, ROW, MIXED) इत्यस्य प्रारूपं सेट् कुर्वन्तु ।expire_logs_days
: Bin Log सञ्चिकानां स्वचालितसमाप्तेः विलोपनस्य च दिवससङ्ख्यां सेट् कुर्वन्तु ।max_binlog_size
: एकस्य Bin Log सञ्चिकायाः अधिकतमं आकारं सेट् कुर्वन्तु ।Bin Log सञ्चिकानां प्रबन्धनार्थं सामान्याः आदेशाः :
Bin Log सञ्चिकासूचीं पश्यन्तु:
SHOW BINARY LOGS;
Bin Log सञ्चिकायाः आकारं पश्यन्तु:
SHOW MASTER STATUS;
पुरातन Bin Log सञ्चिकाः विलोपयन्तु:
PURGE BINARY LOGS TO 'mysql-bin.000010';
वा:
PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';
-- 创建一个名为 'simple_table' 的表
CREATE TABLE `simple_table` (
`item_id` int(11) NOT NULL, -- 项目编号
`value` int(11) DEFAULT NULL, -- 值
`last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 最后更新时间
PRIMARY KEY (`item_id`), -- 设置项目编号为主键
KEY `value_index` (`value`), -- 为值字段创建索引
KEY `update_time_index` (`last_updated`) -- 为最后更新时间字段创建索引
) ENGINE=InnoDB; -- 使用InnoDB存储引擎
-- 插入数据,将日期设置为当前日期
insert into `simple_table` values(1, 1, '2024-07-07');
insert into `simple_table` values(2, 2, '2024-07-07');
insert into `simple_table` values(3, 3, '2024-07-07');
insert into `simple_table` values(4, 4, '2024-07-07');
insert into `simple_table` values(5, 5, '2024-07-07');
Bin Log इत्यस्य सामग्रीं द्रष्टुं mysqlbinlog साधनस्य उपयोगं कुर्वन्तु:
mysql> show binary logs;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 4
Current database: *** NONE ***
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| binlog.000001 | 2411 |
+---------------+-----------+
1 row in set (0.00 sec)
यदि भवन्तः प्रत्यक्षतया उद्घाटयन्ति तर्हि तत् विकृतं भविष्यति।
mysql> show binlog events in 'binlog.000001' from 0 limit 0,4G;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 6
Current database: *** NONE ***
*************************** 1. row ***************************
Log_name: binlog.000001
Pos: 4
Event_type: Format_desc
Server_id: 1
End_log_pos: 123
Info: Server ver: 5.7.26-log, Binlog ver: 4
*************************** 2. row ***************************
Log_name: binlog.000001
Pos: 123
Event_type: Previous_gtids
Server_id: 1
End_log_pos: 154
Info:
*************************** 3. row ***************************
Log_name: binlog.000001
Pos: 154
Event_type: Anonymous_Gtid
Server_id: 1
End_log_pos: 219
Info: SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
*************************** 4. row ***************************
Log_name: binlog.000001
Pos: 219
Event_type: Query
Server_id: 1
End_log_pos: 765
Info: use `d`; -- 创建一个名为 'simple_table' 的表
CREATE TABLE `simple_table` (
`item_id` int(11) NOT NULL, -- 项目编号
`value` int(11) DEFAULT NULL, -- 值
`last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 最后更新时间
PRIMARY KEY (`item_id`), -- 设置项目编号为主键
KEY `value_index` (`value`), -- 为值字段创建索引
KEY `update_time_index` (`last_updated`) -- 为最后更新时间字段创建索引
) ENGINE=InnoDB
4 rows in set (0.01 sec)
ERROR:
No query specified
mysqlbinlog इति आदेशपङ्क्तिसाधनं Bin Log सञ्चिकानां विश्लेषणार्थं उपयुज्यते । सामान्यविकल्पाः सन्ति- १.
--start-datetime
: यदा पार्सिंग् आरभ्यते तदा समयं निर्दिशन्तु।--stop-datetime
: यदा पार्सिंग् समाप्तं भवति तदा समयं निर्दिशन्तु।--start-position
: यत्र पार्सिंग् आरभ्यते तत्र स्थानं निर्दिशन्तु ।--stop-position
: यत्र पार्सिंग् समाप्तं भवति तत् स्थानं निर्दिशन्तु ।यथा, विशिष्टसमयावधिपर्यन्तं Bin Log द्रष्टुं :
mysqlbinlog --start-datetime="2024-07-01 00:00:00" --stop-datetime="2024-07-01 12:00:00" binlog.000001
Bin Log घटनाः आँकडापुनर्प्राप्त्यर्थं MySQL सर्वरे पुनः प्ले कर्तुं शक्यन्ते:
mysqlbin logbinlog.000001 | mysql -u root -p
MySQL master-slave replication इत्यस्य मूलभूतः सिद्धान्तः अस्ति यत् master database Bin Log इति अभिलेखयति, तथा च slave database इत्यनेन data synchronization प्राप्तुं एतान् logs पठति पुनः प्ले च क्रियते विशिष्टानि पदानि निम्नलिखितरूपेण सन्ति ।
मुख्यपुस्तकालयं विन्यस्यताम्:
[mysqld]
log-bin=mysql-bin
server-id=1
दासपुस्तकालयं विन्यस्यताम्:
[mysqld]
server-id=2
relay-log=relay-bin
प्राथमिकदत्तांशकोशे प्रतिकृतिप्रयोक्तारं रचयन्तु:
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
दासदत्तांशकोशे प्रतिकृतिं विन्यस्यताम्:
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=0;
START SLAVE;
प्रतिकृतिस्थितिं पश्यन्तु:
SHOW SLAVE STATUSG
प्रतिकृतिस्थितिः निम्नलिखित-आदेशेन निरीक्षितुं शक्यते ।
SHOW SLAVE STATUSG
सामान्यस्थितिक्षेत्रव्याख्यानानि : १.
Slave_IO_Running
: IO सूत्रस्य स्थितिः।Slave_SQL_Running
:SQL धागा स्थितिः।Seconds_Behind_Master
: दासपुस्तकालयः यदा मुख्यपुस्तकालयात् पृष्ठतः भवति।इन्क्रीमेण्टल् बैकअप इत्यस्य अर्थः अस्ति यत् अन्तिमस्य पूर्ण बैकअप अथवा अन्तिम इन्क्रीमेण्टल् बैकअप इत्यस्मात् सर्वेषां परिवर्तनानां बैकअप करणम् । Bin Log इत्यस्य उपयोगेन वृद्धिशीलं बैकअपं प्राप्तुं शक्यते ।
पूर्णं बैकअपं कुर्वन्तु:
mysqldump --all-databases --master-data=2 > full_backup.sql
वर्तमान Bin Log स्थानं अभिलेखयन्तु:
पूर्णे बैकअप सञ्चिकायां निम्नलिखितपङ्क्तयः अन्वेष्टुम् ।
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=12345;
बैकअप बिन लॉग:
mysqlbinlog --start-position=12345 binlog.000001 > incremental_backup.sql
पूर्णं बैकअपं पुनःस्थापयन्तु:
mysql < full_backup.sql
वृद्धिशीलं बैकअपं प्रयोजयन्तु:
mysql < incremental_backup.sql
MySQL Bin Log
इदं एकं शक्तिशाली साधनं यत् दत्तांशपुनर्प्राप्तिः, प्रतिकृतिः, लेखापरीक्षा च इत्यादिषु परिदृश्येषु व्यापकरूपेण उपयुज्यते ।सम्यक् विन्यस्तं कृत्वा उपयोगेन चBin Log
, यत् MySQL-दत्तांशकोशस्य विश्वसनीयतां उपलब्धतां च बहुधा सुधारयितुं शक्नोति । व्यावहारिक-अनुप्रयोगेषु, आँकडाधार-प्रशासकानाम् विकासकानां च कृते Bin Log इत्यस्य उपयोग-कौशलं अनुकूलन-विधिषु च निपुणतां प्राप्तुं महत्त्वपूर्णम् अस्ति ।