सोमवार, 19 मार्च 2018

MySQL 8.0.4 आरसी

MySQL 8.0.4 आरसी को अभी " पूर्व-सामान्य उपलब्धता ड्राफ्ट: 2018-03-19 " के रूप में जारी किया गया था। 

मैंने एक त्वरित तिरछी नज़र लेने का फैसला किया और यहां मेरे इंप्रेशन को नोट किया। इनमें से कुछ बहुत पुरानी खबर हैं क्योंकि इस रिलीज के बारे में थोड़ी देर के बारे में बात की गई है लेकिन मैंने अपने विचारों को वैसे भी जोड़ा।

पहली बात मैंने देखा कि अद्यतन किया गया mysql क्लाइंट का उपयोग करने का एक सरल मुद्दा था मेरे पुराने संस्करण अभी भी मेरे रास्ते में था जिसके परिणामस्वरूप

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
इतना आसान तय है और सुनिश्चित करें कि आप वैध अपडेट किए गए mysql क्लाइंट का उपयोग कर रहे हैं। बेशक अन्य विकल्प mysql_native_password पर प्रमाणीकरण प्लग-इन को बदलना पसंद करते हैं, लेकिन परेशान क्यों हैं, सुरक्षित विधि का उपयोग करें यह सुरक्षा के लिए बहुत अच्छी वृद्धि है, इसलिए इस संबंध में हैरान मत हो, अगर आपके पास इस अधिक सुरक्षित विधि का उपयोग करते हुए अपने कनेक्शन मिलते समय कुछ कनेक्शन समस्याएं हैं


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 8.0.4-rc-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

तो पहले बहुत ही शांत वृद्धि ...

mysql> show create table user\G
*************************** 1. row ***************************
तालिका: उपयोगकर्ता
तालिका बनाएँ: टैब बनाएँ `उपयोगकर्ता '(
`होस्ट` कक्ष (60) कॉललेट यूटीएफ 8_बीन नल डिफॉल्ट '',
`उपयोगकर्ता` चार (32) COLLATE utf8_bin नल डिफॉल्ट '',
`चयन करें_प्रार्थी` ('एन', 'वाई') वर्ण सेट करें utf8 नल डिफॉल्ट 'एन',
`Insert_priv` enum ('N', 'Y') वर्ण सेट UTF8 नहीं है, NULL DEFAULT 'N',
`Update_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Delete_priv` enum ('N', 'Y') वर्ण सेट करें utf8 नहीं है नल डिफॉल्ट 'एन',
`Create_priv` enum ('N', 'Y') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`ड्रॉप_परिव एन्म '(' एन ',' वाई ') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट' एन ',
`पुनः लोड_प्रार्थी 'एन्यूम (' एन ',' वाई ') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट एन',
'शटडाउन_प्रिट' एन्यूम ('एन', 'वाई') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट एन ',
`Process_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`File_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Grant_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`संदर्भ_प्रावित` एन्यूम ('एन', 'वाई') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`इंडेक्स_परिव एन्म '(' एन ',' वाई ') टाइपकर्ता सेट यूटीएफ 8 नल डिफॉल्ट' एन '
`Alter_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Show_db_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`सुपर_परिव 'एन्यूम (' एन ',' वाई ') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट एन',
`Create_tmp_table_priv` enum ('N', 'Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum ('N', 'Y') टाइपकर्ता सेट अप utf8 नहीं है नल डिफॉल्ट 'एन',
`Execute_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Repl_slave_priv` enum ('N', 'Y') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`Repl_client_priv` enum ('N', 'Y') वर्ण सेट करें utf8 नहीं है, नल डिफॉल्ट 'एन',
`Create_view_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Show_view_priv` enum ('N', 'Y') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`Create_routine_priv` enum ('N', 'Y') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`Alter_routine_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`Create_user_priv` enum ('N', 'Y') वर्ण सेट करें utf8 नहीं है नल डिफॉल्ट 'एन',
`Event_priv` enum ('N', 'Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ट्रिगर_प्रावित` एन्यूम ('एन', 'वाई') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट एन ',
`Create_tablespace_priv` enum ('N', 'Y') वर्ण सेट UTF8 नल डिफॉल्ट 'एन',
`ssl_type` enum ('', 'ANY', 'X509', 'निर्दिष्ट') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट '',
`ssl_cipher` ब्लॉब नहीं नल,
`x509_आईसीयूआरयूआर 'धधकते नल,
`x509_ विषयक 'बूँद नहीं शून्य,
`max_questions` int (11) अहस्ताक्षरित नहीं शून्य डिफ़ॉल्ट '0',
`max_updates` int (11) अहस्ताक्षरित नहीं नल डिफ़ॉल्ट '0',
`max_connections` int (11) अहस्ताक्षरित नहीं नल डिफ़ॉल्ट '0',
`max_user_connections` int (11) अहस्ताक्षरित नहीं नल डिफ़ॉल्ट '0',
`प्लगइन` चार (64) COLLATE utf8_bin नल डिफॉल्ट 'caching_sha2_password' नहीं,
`प्रमाणीकरण_स्ट्रिंग` पाठ COLLATE utf8_bin,
`पासवर्ड_अपेक्षित` एन्यूम ('एन', 'वाई') टाइपकर्ता सेट यूटीएफ 8 नल डिफॉल्ट 'एन',
`पासवर्ड_last_changed` टाइमस्टैम्प नाल डिफॉल्ट नल,
`पासवर्ड_लिफ़टाइम 'छोटा (5) अहस्ताक्षरित डिफॉल्ट नल,
`account_locked` enum ('एन', 'वाई') वर्ण सेट यूटीएफ 8 नल डिफॉल्ट एन ',
`Create_role_priv` enum ('N', 'Y') वर्ण सेट UTF8 नहीं है, NULL DEFAULT 'N',
`Drop_role_priv` enum ('N', 'Y') वर्ण सेट UTF8 नहीं है, NULL DEFAULT 'N',
`पासवर्ड_reuse_history` छोटा (5) अहस्ताक्षरित डिफॉल्ट नल,
`पासवर्ड_रेउज़_टाइम` छोटा (5) अहस्ताक्षरित डिफॉल्ट नल,
प्राथमिक कुंजी (`होस्ट ',` उपयोगकर्ता`)
) / *! 50100 टैबिलस्पेस `mysql` * / इंजन = InnoDB DEFAULT चार्सेट = utf8 COLLATE = utf8_bin STATS_PERSISTENT = 0 COMMENT = 'उपयोगकर्ता और वैश्विक विशेषाधिकार'
सेट में 1 पंक्ति (0.00 सेकंड)

हाँ यूजर टेबल InnoDB है और खुद की टेबलस्पेस है

नए डाटा डिक्शनरी के अतिरिक्त के साथ आप अब Information_schema परिवर्तनों को नोटिस करेंगे।
इसलिए एक सरल उदाहरण के रूप में स्तंभ तालिका ऐतिहासिक रूप से एक दृश्य नहीं रही है लेकिन अब कई अन्य लोगों के साथ बदल दिया गया है, जैसा कि आप प्रदान किए गए यूआरएल के माध्यम से देख सकते हैं।


mysql> show create table COLUMNS \G
*************************** 1. row ***************************
देखें: COLUMNS
दृश्य बनाएं: एल्गोरिथ्म बनाएं = अनुपयुक्त DEFINER = 'mysql.infoschema` @ `लोकलहोस्ट`

यह information_schema के साथ प्रदर्शन में मदद करने के लिए किया जाता है लेकिन जानकारी के लिए प्रति क्वेरी अस्थायी तालिका क्रिएशन को निकालता है।

प्रलेखन के अध्याय 14 इस पर गहराई से चला जाता है, नीचे दी गई यूआरएल आपको अधिक जानकारी प्राप्त करने में मदद करेगी और भावी ब्लॉग पोस्ट इस पर अधिक छू सकती हैं।
पहले वर्णित डेटा शब्दकोश तब भी परमाणु डेटा परिभाषा भाषा (डीडीएल) बयान या परमाणु डीडीएल की क्षमता की ओर जाता है


यदि आप एक नए MySQL 8.0 उदाहरण के लिए प्रतिकृति सेट करने से पहले अपने प्रश्नों की समीक्षा नहीं करते हैं, तो यह कुछ लेन-देन की संभावना है। मैं कहता हूं कि टेबल रखरखाव का प्रबंधन कैसे प्रभावित हो सकता है। यदि आप "यदि मौजूद हैं" के साथ साफ प्रश्न लिखते हैं तो यह एक बड़ी समस्या नहीं होगी। कुल मिलाकर यह अधिक लेनदेन आधारित सुविधा है जो आपके डेटा और रोलबैक विकल्पों की रक्षा करती है।


संसाधन प्रबंधन बहुत ही दिलचस्प दिखता है और मुझे इस पर ध्यान देने के लिए अधिक समय लेना होगा क्योंकि यह MySQL 8.0 के साथ एक नई सुविधा है। कुल मिलाकर आप समूह निर्दिष्ट कर सकते हैं और अब क्वेरी की प्राथमिकता निर्धारित नहीं करनी चाहिए लेकिन अपने समूह को यह परिभाषित करना चाहिए कि क्वेरी को किस प्रकार व्यवहार करना चाहिए और उसके लिए आवंटित संसाधन होना चाहिए।

mysql> select @@version;
+------------+
| @@ संस्करण |
+ ------------ +
| 5.7.16-लॉग |
+ ------------ +
सेट में 1 पंक्ति (0.00 सेकंड)

mysql> desc INFORMATION_SCHEMA.RESOURCE_GROUPS;
त्रुटि 110 9 (42 एस 02): सूचना_एसकेमा में अज्ञात तालिका 'RESOURCE_GROUPS'

mysql> @@ संस्करण का चयन करें;
+ -------------- +
| @@ संस्करण |
+ -------------- +
| 8.0.4-आरसी-लॉग |
+ -------------- +
सेट में 1 पंक्ति (0.00 सेकंड)

mysql> desc INFORMATION_SCHEMA.RESOURCE_GROUPS;
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
| फील्ड | प्रकार | नल | कुंजी | डिफ़ॉल्ट | अतिरिक्त |
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
| RESOURCE_GROUP_NAME | varchar (64) | नहीं | | नल | |
| RESOURCE_GROUP_TYPE | enum ('प्रणाली', 'उपयोगकर्ता') | नहीं | | नल | |
| RESOURCE_GROUP_ENABLED | टिनिंट (1) | नहीं | | नल | |
| VCPU_IDS | ब्लॉब | हां | | नल | |
| THREAD_PRIORITY | इंट (11) | नहीं | | नल | |
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
सेट में 5 पंक्तियां (0.00 सेकंड)


अपने इनोडाबी बफर पूल कैश में अधिक जानकारी उस इंडेक्स के संबंध में है जो अब उपलब्ध है।

mysql> desc INFORMATION_SCHEMA.INNODB_CACHED_INDEXES ;
+----------------+---------------------+------+-----+---------+-------+
| फील्ड | प्रकार | नल | कुंजी | डिफ़ॉल्ट | अतिरिक्त |
+ ---------------- + --------------------- + ------ + --- - + --------- + ------- +
| SPACE_ID | int (11) अहस्ताक्षरित | नहीं | | | |
| INDEX_ID | बड़ी बात (21) अहस्ताक्षरित | नहीं | | | |
| N_CACHED_PAGES | बड़ी बात (21) अहस्ताक्षरित | नहीं | | | |
+ ---------------- + --------------------- + ------ + --- - + --------- + ------- +
सेट में 3 पंक्तियां (0.01 सेकंड)


यदि आप अनिश्चित हैं कि इनोडीबी बफर पूल को सेट करने के लिए, लॉग-सीज़ या फ्लश मेसेज, तो MySQL इन उपलब्ध स्मृति के आधार पर आपके लिए सेट करेगा।

innodb_dedicated_server

[mysqld]
innodb-dedicated-server=1

mysql> चुनें @@ innodb_dedicated_server;
+ --------------------------- +
| @@ innodb_dedicated_server |
+ --------------------------- +
| 1 |
+ --------------------------- +

इस सरल परीक्षण ने मेरे innodb_buffer_pool_size को 6 जीबी तक सेट किया है, उदाहरण के लिए जब डिफ़ॉल्ट 128MB है

कई JSON परिवर्धन और साथ ही नियमित अभिव्यक्ति परिवर्तन भी किए गए हैं। दोनों जो आशाजनक दिखते हैं

इस रिलीज के मुकाबले एकमात्र प्रतिकृति संवर्धन ही है जो अब कॉम्पैक्ट बाइनरी प्रारूप का उपयोग करते हुए जेएसओएन दस्तावेज़ों के आंशिक अद्यतनों के द्विआधारी लॉगिंग का समर्थन करता है।

हालांकि कुल मिलाकर कई विशेषताएं उपलब्ध हैं (आप यहां उनके बारे में सब कुछ पढ़ सकते हैं), जिनमें से एक (मैं चाहता था कि मेरा ग्राहक कल था) चैनल प्रति प्रतिकृति फाइलर्स है।
मेरे परीक्षण के उदाहरण में पहले से ही द्विआधारी लॉग सक्षम थे, लेकिन वे अब टेबल आधारित बनाम फ़ाइल आधारित मास्टर और गुलाम जानकारी के साथ डिफ़ॉल्ट रूप से चालू हैं (डिफ़ॉल्ट के आधार पर उस लेनदेन के बड़े प्रशंसक)

कुल मिलाकर यह ध्यान रखें कि यह इस रिलीज पर पहली नज़र है और उस पर बहुत उच्च स्तर के विचार, कई अन्य परिवर्तन मौजूद हैं। इस रिलीज के बारे में अन्य ब्लॉग पोस्ट्स के साथ-साथ मैनुअल और रिलीज नोट्स भी देखेंगे। निश्चित रूप से डाउनलोड और समीक्षा करें क्योंकि प्रशासन, सुरक्षा और नकल देखने के बिंदु के लिए यह बहुत आशाजनक है।

मंगलवार, 13 मार्च 2018

MySQL धोखा पत्र

तो पहले मैंने कुछ समय के रूप में महसूस किया है कि मुझे होना चाहिए। मैं अभी भी MySQL और सभी संबंधित फोर्कियों के साथ काम करने में बहुत व्यस्त हूं और ब्लॉग को बाहर करने में विफल रहा क्योंकि मुझे लगा कि मुझे चाहिए। इसलिए मैं उस पर काम करूंगा। 

अब कहा जा रहा है कि मैंने दूसरे दिन एक वेबसाइट को याद किया जिसे मैं प्यार करता था क्योंकि यह एक आम छठी पत्रक सूची थी। वाक्यविन्यास जो आप जानते हैं, आपको पता है कि आपको इसकी आवश्यकता है, लेकिन इसे 3 गुना जब तक यह सही नहीं है। जब यह सही में प्रवेश करता है, तो आप इसे चुस्त करते हुए देखते हैं, मैंने सोचा कि मैंने पहले ही लिखा है। 

इसलिए मुझे लगा कि सामान्य माइस्काइव की एक साधारण सूची क्यों नहीं है कि हम सब एक महीने में 50 बार टाइप करते हैं या हमें अपने हाथ की पीठ की तरह पता होना चाहिए, लेकिन भूल जाएं कि ग्राहक हमारे कंधे की तरफ देख रहा है। 
शुरुआत के लिए.. 
हम एक नया MySQL 5.7.6+ सर्वर सेट अप और लॉग इन करें .. 
हमें कुछ भी करने से पहले पासवर्ड बदलने की आवश्यकता है लेकिन यह बदल गया है उपयोगकर्ता सेट पास नहीं है 
हम यह जानना चाहते हैं कि पासवर्ड अभी भी कैसे पढ़ सकता है क्योंकि यह स्पष्ट पाठ में है। 

ALTER USER 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 
सेट पासवर्ड है 
SET PASSWORD FOR 'bob''@'localhost' = PASSWORD('cleartext password'); 

बाइनरी लॉग को साफ करें 
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2008-04-02 00:00:00
PURGE BINARY LOGS BEFORE NOW() - interval 3 DAY;

MySQL डंप 
# COMPACT WILL REMOVE DROP STATEMENTS
mysqldump --events --master-data=2 --routines --triggers --compact --all-databases > db.sql
mysqldump --events --master-data=2 --routines --triggers --all-databases > NAME.sql
mysqldump --opt --routines --triggers dbname > dbname.sql
mysqldump --opt --routines --triggers --no-create-info joomla jforms > dataonly.sql 

एक पल के लिए विदेशी कुंजी बंद करें 
SET GLOBAL foreign_key_checks=0; 



अनुदान छोड़ें 
/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf --skip-grant-tables
vi /etc/mysql/my.cnf
[mysqld]
skip-grant-tables


बिनलॉग समीक्षाएं 
--base64-output = DECODE-ROWS और --verbose 
mysqlbinlog --defaults-file=/home/anothermysqldba/.my.cnf --base64-output=DECODE-ROWS --verbose binlog.005862 > 005862.sql

MYSQL सुरक्षित क्लाइंट 
mysql_config_editor print --all
mysql_config_editor set --user=mysql --password --login-path=localhost --host=localhost
mysql --login-path=localhost -e 'SELECT NOW()';

विनिमय 
sudo swapoff -a
To set the new value to 10: echo 10 | sudo tee /proc/sys/vm/swappiness
sudo swapon -a 

यदि सूचना स्कीमा धीमा है 
set global innodb_stats_on_metadata=0; 

एडब्ल्यूएस वैरिएबल 
CALL mysql.rds_show_configuration;
> call mysql.rds_set_configuration('binlog retention hours', 24);
> call mysql.rds_set_configuration('slow_launch_time', 2);

पता लगाएं कि कोई स्तंभ नाम किस तालिका में है 
SELECT TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'fieldname' ; 
क्लाइंट का कहना है कि यह टेबलए में है लेकिन उनके पास 50 डाटाबेस हैं..इस स्कीमा में टेबल ए 
SELECT TABLE_SCHEMA , TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = 'TableA' ; 

दास कर्मियों को समायोजित करें 
Select @@slave_parallel_workers;
Stop Slave; Set GLOBAL slave_parallel_workers=5; Start Slave;

MySQL मल्टी 
5.6>
To start both : mysqld_multi start 1,2
To check on status of both: mysqld_multi report 1,2
To check on status or other options you can use just one

5.7<
[mysqld1] BECOMES [mysqld@mysqld1]
systemctl start mysqld@mysqld1
systemctl start mysqld@mysqld2
systemctl start mysqld@mysqld3
systemctl start mysqld@mysqld4 
MySQL केवल सिस्टम तालिकाओं का नवीनीकरण 
mysql_upgrade --defaults-file=/home/ anothermysqldba /.my.cnf --upgrade-system-tables 

स्किप नोटिफिकेशन त्रुटि 
STOP SLAVE; SET GLOBAL sql_slave_skip_counter =1; START SLAVE; SELECT SLEEP(1); SHOW SLAVE STATUS\G