Wednesday, June 25, 2014

MySQL तालिका त्रुटि 1064

Original post : http://anothermysqldba.blogspot.com/2014/06/mysql-table-error-1064.html

तो मैं आज एक अजीब स्थिति में आया था. 

मैं PHP $ _COOKIE ['PHPSESSID'] मूल्य का उपयोग कर स्मृति टेबल बनाता है एक प्रणाली है. 

कुछ काम किया है, यह तो तालिका चला जाता है. 

दो नमूने तालिकाओं मेरे उदाहरण के लिए नीचे दिए गए हैं. 


@@VERSION: 5.6.19-log 
CREATE TABLE `f7a7a8d3a7ba75b5eb1712864c9b27eb` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 

CREATE TABLE `8865e52c7e1bea515e7156f240729275` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 


अब कुछ सरल प्रसंस्करण मैं मैं उन्हें गिरा दिया ने कहा कि जैसे मैं फिर रियल टेबल पर होता है. 


DROP TABLE IF EXISTS f7a7a8d3a7ba75b5eb1712864c9b27eb; 
Query OK, 0 rows affected (0.09 sec) 


मैं इस में भाग गया जब तक पर्याप्त सरल .. 


desc 8865e52c7e1bea515e7156f240729275; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8865e52c7e1bea515e7156f240729275' at line 1 

DROP TABLE IF EXISTS 8865e52c7e1bea515e7156f240729275; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8865e52c7e1bea515e7156f240729275' at line 1 


अब तय वास्तव में बहुत सरल है. लेकिन सवाल यह है कि क्यों एक काम और एक विफल करता है? 

इसे ठीक करने के लिए सिर्फ तालिका नाम backtick. मैं वैसे भी शुरू से ही किया जाना चाहिए जो. उस में पाने के लिए सिर्फ एक अच्छा अभ्यास है. 


DROP TABLE IF EXISTS `8865e52c7e1bea515e7156f240729275`; 
Query OK, 0 rows affected (0.02 sec) 


अब मैं पहले शायद मुद्दा अल्फा न्यूमेरिक नाम था कि सोचा था, लेकिन हम एक संस्करण है कि काम करता देख सकते हैं. फर्क हालांकि तालिका नाम की शुरुआत है.एक एक पूर्णांक है और एक एक अल्फा चरित्र है. तो फिर .. ऐसे बेवकूफ गलतियों से बचने के लिए सर्वोत्तम प्रथाओं और भाव तालिका नामों का पालन करें. 


सभी त्रुटि कोड एक पार्स त्रुटि होने पर .. 


perror 1064 
MySQL error code 1064 (ER_PARSE_ERROR): %s near '%-.80s' at line %d 

Monday, June 16, 2014

MySQL यादृच्छिक पूर्णांकों

Original post: http://anothermysqldba.blogspot.com/2014/06/mysql-random-integers.html

यह किसी भी तरह से एक नई सुविधा नहीं है, लेकिन यह मैं हर अब और फिर पॉप अप को देखने के लिए होता है एक सवाल है. तो एक त्वरित उदाहरण पीछा कर रहा है. 

MySQL के भीतर एक यादृच्छिक पूर्णांक उत्पन्न करने के लिए आप फर्श और रैंड कार्यों का उपयोग कर सकते हैं. : यह यहाँ MySQL पुस्तिका दस्तावेजोंhttp://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html # function_rand 

" रेंज में एक यादृच्छिक पूर्णांक आर प्राप्त करने के लिए मैं <= आर <जम्मू, (मैं रैंड + () * (जम्मू - मैं)) अभिव्यक्ति मंजिल का उपयोग " 

तो एक उदाहरण दे करने के लिए: 

> SET @I = 3; # lower range 
> SET @J = 43 - @I; # max range minus lower range 

> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 4 
1 row in set (0.00 sec) 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 8 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 15 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 16 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 23 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 42 
1 row in set (0.00 sec 

Saturday, June 14, 2014

Percona XtraDB क्लस्टर का अधिष्ठापन

Original post: http://anothermysqldba.blogspot.com/2014/06/installing-percona-xtradb-cluster.html

 तो बेशक Percona प्रक्रिया को समझा कि दस्तावेज है. इस ब्लॉग का लक्ष्य है कि कोई मदद कर सकते हैं उम्मीद है कि एक छोटे से अधिक विस्तार में जाने की है. 

समीक्षा के लिए हाइपरलिंक: 
किसी और चीज की 
  • फ़ायरवॉल बंदरगाहों 3306, 4444, 4567 और 4568 से कनेक्ट करने की अनुमति देने के लिए की गई है
  • आंतरिक स्थानीय नेटवर्क के लिए iptables बंद करो या iptable नियमों को समायोजित.
/etc/init.d/iptables stop 

  • SELinux अक्षम है
echo 0 >/selinux/enforce 
vi /etc/selinux/config 

  • SSH कुंजियों और सभी id_rsa.pub मानों सभी सर्वरों पर authorized_keys में हैं तो authorized_keys में जगह निर्धारित किया है.
# ssh-keygen -t rsa 
# cd /root/.ssh/ 
# cp id_rsa.pub authorized_keys 
# chmod 600 /root/.ssh/authorized_keys 
# chmod 700 /root/.ssh/ 


इसलिए मैं CentOS 6.5 के स्थापित एक बुनियादी सर्वर के साथ शुरू कर दिया. 
# yum -y install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm 
# yum -y install http://mirror.pnl.gov/epel/6/x86_64/epel-release-6-8.noarch.rpm 
# wget http://www.percona.com/downloads/RPM-GPG-KEY-percona /etc/pki/rpm-gpg/RPM-GPG-KEY-percona 
# wget http://www.percona.com/downloads/RPM-GPG-KEY-percona /etc/pki/rpm-gpg/RPM-GPG-KEY-percona 
# yum -y install socat 


मैं mysql-libs और संबंधित निर्भरता हटाया किसी भी संघर्ष से बचने के लिए 
# rpm -e mysql-libs postfix cronie redhat-lsb-core redhat-lsb-printing redhat-lsb-graphics libcgroup numad redhat-lsb sysstat crontabs cronie-anacron redhat-lsb-compat


तब मैं Percona क्लस्टर संकुल स्थापित. 
# yum -y install Percona-XtraDB-Cluster-full-56 
[root@node1 ~]# /etc/init.d/mysql start 
Starting MySQL (Percona XtraDB Cluster)......... SUCCESS! 
mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'" 
mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'" 
mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'" 


तो हम नोड प्रति हटाया आइटम जगह ले सकता है .. 
yum -y install postfix cronie redhat-lsb-core redhat-lsb-printing redhat-lsb-graphics libcgroup numad redhat-lsb sysstat crontabs cronie-anacron redhat-lsb-compat 


हम अगले क्लस्टर कॉन्फ़िगर कर सकते हैं कि इतना तो उपरोक्त चरणों का दोहरा संकुल स्थापित हो जाएगा. 

[root@node2 ~]# /etc/init.d/mysql start 
Starting MySQL (Percona XtraDB Cluster)......... SUCCESS! 
[root@node3 ~]# /etc/init.d/mysql start 
Starting MySQL (Percona XtraDB Cluster)........ SUCCESS! 

हम चल MySQL के तीन उदाहरण है जबकि यह अभी तक एक क्लस्टर नहीं है. 

नोड्स का विन्यास

नोड 1 / आदि / my.cnf 
[mysqld] 

datadir=/var/lib/mysql 
user=mysql 

# Path to Galera library 
wsrep_provider=/usr/lib64/libgalera_smm.so 

# Cluster connection URL contains the IPs of node#1, node#2 and node#3 
# node 1 192.168.0.33 
# nod3 2 192.168.0.34 
# nod3 3 192.168.0.35 
wsrep_cluster_address=gcomm://192.168.0.33,192.168.0.34,192.168.0.35 

# In order for Galera to work correctly binlog format should be ROW 
binlog_format=ROW 

# MyISAM storage engine has only experimental support 
default_storage_engine=InnoDB 

# This changes how InnoDB auto increment locks are managed and is a requirement for Galera 
innodb_autoinc_lock_mode=2 

# Node #1 address 
wsrep_node_address=192.168.0.33 

# SST method 
#wsrep_sst_method=xtrabackup 
wsrep_sst_method=rsync # 
# wsrep_sst_method=rsync_wan # 
# wsrep_sst_method=mysqldump # SLOW 

# Cluster name 
wsrep_cluster_name=percona_cluster 

# Authentication for SST method 
wsrep_sst_auth="root:<password_here>" 

# server_id 
server_id=3232235553 #SELECT INET_ATON('192.168.0.33') 

#[client] 
socket=/var/lib/mysql/mysql.sock 


1 क्लस्टर नोड शुरू 
/etc/init.d/mysql start --wsrep-cluster-address="gcomm://" 
Starting MySQL (Percona XtraDB Cluster)...................................... SUCCESS! 

[root@node1 mysql]# cat grastate.dat 
# GALERA saved state 
version: 2.1 
uuid: 97c457f8-f3d2-11e3-9b4e-374ebb7427e6 
seqno: -1 
cert_index: 


क्लस्टर पल में केवल एक नोड है. 
mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node1.localdomain 
1 row in set (0.01 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 1 


ठीक है अब अब एक और चल रहा है हम 2 नोड शुरू कर सकते हैं 
नोड 2 / etc / my.cnf 
[mysqld] 

datadir=/var/lib/mysql 
user=mysql 

# Path to Galera library 
wsrep_provider=/usr/lib64/libgalera_smm.so 

# Cluster connection URL contains the IPs of node#1, node#2 and node#3 
# node 1 192.168.0.33 
# nod3 2 192.168.0.34 
# nod3 3 192.168.0.35 
wsrep_cluster_address=gcomm://192.168.0.33,192.168.0.34,192.168.0.35 

# In order for Galera to work correctly binlog format should be ROW 
binlog_format=ROW 

# MyISAM storage engine has only experimental support 
default_storage_engine=InnoDB 

# This changes how InnoDB auto increment locks are managed and is a requirement for Galera 
innodb_autoinc_lock_mode=2 

# Node #1 address 
wsrep_node_address=192.168.0.34 

# SST method 
#wsrep_sst_method=xtrabackup 
wsrep_sst_method=rsync # 
# wsrep_sst_method=rsync_wan # 
# wsrep_sst_method=mysqldump # SLOW 


# Cluster name 
wsrep_cluster_name=percona_cluster 

# Authentication for SST method 
wsrep_sst_auth="root:" 

# to enable debug level logging, set this to 1 
wsrep_debug=1 

# server_id 
server_id=3232235554 # SELECT INET_ATON('192.168.0.34') 

#[client] 
socket=/var/lib/mysql/mysql.sock 

[root@node2 mysql]#/etc/init.d/mysql start 
Starting MySQL (Percona XtraDB Cluster)........................... SUCCESS! 


अब प्रत्येक नोड पर हमारे मूल्यों की तुलना करें. 
mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node1.localdomain 
1 row in set (0.01 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 2 

mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node2.localdomain 
1 row in set (0.00 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 2 
1 row in set (0.18 sec) 


अब हम इस मिश्रण में 3 नोड जोड़ने. 

नोड 3 / etc / my.cnf 
[mysqld] 

datadir=/var/lib/mysql 
user=mysql 

# Path to Galera library 
wsrep_provider=/usr/lib64/libgalera_smm.so 

# Cluster connection URL contains the IPs of node#1, node#2 and node#3 
# node 1 192.168.0.33 
# nod3 2 192.168.0.34 
# nod3 3 192.168.0.35 
wsrep_cluster_address=gcomm://192.168.0.33,192.168.0.34,192.168.0.35 

# In order for Galera to work correctly binlog format should be ROW 
binlog_format=ROW 

# MyISAM storage engine has only experimental support 
default_storage_engine=InnoDB 

# This changes how InnoDB auto increment locks are managed and is a requirement for Galera 
innodb_autoinc_lock_mode=2 

# Node #1 address 
wsrep_node_address=192.168.0.35 

# SST method 
# wsrep_sst_method=xtrabackup 
wsrep_sst_method=rsync # 
# wsrep_sst_method=rsync_wan # 
# wsrep_sst_method=mysqldump # SLOW 


# Cluster name 
wsrep_cluster_name=percona_cluster 

# Authentication for SST method 
wsrep_sst_auth="root:" 

# to enable debug level logging, set this to 1 
wsrep_debug=1 

# server_id 
server_id=3232235555 # SELECT INET_ATON('192.168.0.35') 

#[client] 
socket=/var/lib/mysql/mysql.sock 

[root@node3 mysql]#/etc/init.d/mysql start 
Starting MySQL (Percona XtraDB Cluster)........................... SUCCESS! 

[root@node3 mysql]# cat grastate.dat 
# GALERA saved state 
version: 2.1 
uuid: 97c457f8-f3d2-11e3-9b4e-374ebb7427e6 
seqno: -1 
cert_index: 


तो कैसे हमारे नोड्स के सभी अब दिखते हैं. 
mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node1.localdomain 
1 row in set (0.01 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 3 

mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node2.localdomain 
1 row in set (0.00 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 3 

mysql> select @@hostname\G show global status like 'wsrep_cluster_size' \G 
*************************** 1. row *************************** 
@@hostname: node3.localdomain 
1 row in set (0.00 sec) 

*************************** 1. row *************************** 
Variable_name: wsrep_cluster_size 
Value: 3 

नोड्स टेस्ट 
तो अब हम कुछ डेटा लोड और इसे बाहर का परीक्षण कर सकते हैं .. 
[root@node2 ~]# wget http://downloads.mysql.com/docs/world_innodb.sql.gz 
[root@node2 ~]# gzip -d world_innodb.sql.gz 
[root@node2 ~]# mysql -e "create database world" 
[root@node2 ~]# mysql world < world_innodb.sql 


अतः अब सब कुछ भरी हुई है कि ... यह क्लस्टर भर में सब क्या है? 
@@hostname: node1.localdomain 
DATABASE_SCHEMA: world 
ENGINE: InnoDB 
count_tables: 3 
TOTAL_DB_GB: 0.001 

@@hostname: node2.localdomain 
DATABASE_SCHEMA: world 
ENGINE: InnoDB 
count_tables: 3 
TOTAL_DB_GB: 0.001 

@@hostname: node3.localdomain 
DATABASE_SCHEMA: world 
ENGINE: InnoDB 
count_tables: 3 
TOTAL_DB_GB: 0.001 

यह काम कर रहा है की तरह लग रहा है.