Category Archives: sadmin

sadmin

mysql-proxy + memcached -- Инсталиране и конфигуриране

Идеята е да се обедини mysql-proxy + memcache. Защо ?
Защото искам всяка select заявка да се кешира в memcache. Ако не е кеширана да я кешира и при следващо извикване да я извлича от memcache.

Защо не се пусне само memcache и от самото php да се свързва към memcache демона ?

Защото по този метод (разгледана в публикацията) не се налага да се променя кода на писане т.е. просто се php приложението се свързва към localhost:4040 вместо към localhost (порта 4040 може да бъде променян разбира се, дори и на 3306 )

aptitude install lua5.1 liblua5.1-md5-0 liblua5.1-socket2 luarocks memcached mysql-proxy
mkdir /tmp/mysql-proxy-memcache-temp;
cd /tmp/mysql-proxy-memcache-temp;

wget http://luaforge.net/frs/download.php/4041/liblua5.1-memcached0.deb
wget http://luamemcached.googlecode.com/files/liblua5.1-memcached0.deb

wget http://luarocks.org/releases/luarocks-2.0.4.1.tar.gz

tar zxvf luarocks-2.0.4.1.tar.gz

./configure
make
make install;

luarocks install md5

cd /tmp/mysql-proxy-memcache-temp;
wget http://luaforge.net/frs/download.php/4542/luamemcached.0.7.tar.gz
tar xzvf luamemcached.0.7.tar.gz
mv *.lua /usr/local/share/lua/5.1/
luarocks install luasocket

cp mysql-proxy-cache.lua /usr/share/mysql-proxy/

mysql-proxy --proxy-lua-script=/usr/share/mysql-proxy/mysql-proxy-cache.lua

Код на mysql-proxy-cache.lua :

require('luarocks.require')
require('md5')
require('Memcached')
local memcache = Memcached.Connect()
cache_hits = 0
cache_misses = 0
cache_timeout = 30
function is_query(packet)
return packet:byte() == proxy.COM_QUERY
end

function is_cacheable(query)
return query:sub(1,6):lower() == 'select'
end

function to_hash(query)
db = proxy.connection.client.default_db
return md5.sumhexa(query..'db'..db)
end

function cache_get(query)
db = proxy.connection.client.default_db
local result = deserialize(memcache:get(to_hash(query)))
if result then
print('HIT: '..to_hash(query)..' ('..query..') DB:'..db)
cache_hits = cache_hits + 1
else
print('MISS: '..to_hash(query)..' ('..query..') DB:'..db)
cache_misses = cache_misses + 1
end

print('Cache hit ratio: '..cache_hits..'/'..cache_misses..' = '..cache_hits/cache_misses..' DB:'..db)

return result
end

function cache_set(result_packet)
local resultset_is_needed = false
local query = result_packet.query:sub(2)
local field_count = 1
local fields = result_packet.resultset.fields
local resultset = {rows={}, fields={}}

print('SET: '..to_hash(query)..' ('..query..')')

while fields[field_count] do
local field = fields[field_count]
--added third option, expiry time.
table.insert(resultset.fields, {type=field.type, name=field.name} )
field_count = field_count + 1
end

for row in result_packet.resultset.rows do
table.insert(resultset.rows, row)
end

memcache:set(to_hash(query), serialize(resultset), cache_timeout)
end

function serialize(o)
local result = {}
local o_type = type(o)

if o_type == "number" then
table.insert(result, o)

elseif o_type == "string" then
table.insert(result, string.format("%q", o))

elseif o_type == "table" then
table.insert(result, "{")
for key, value in pairs(o) do
for i, str in pairs({"[", serialize(key), "]=",
serialize(value), ","}) do
table.insert(result, str)
end
end
table.insert(result, "}")

elseif o_type == "nil" then
table.insert(result, "nil")

else
error("cannot serialize a " .. o_type)
end

return table.concat(result, ")
end

function deserialize(s)
if s then
return loadstring('return '..s)()
else
return nil
end
end

function read_query( packet )
if is_query(packet) then
local query = packet:sub(2)

if is_cacheable(query) then
local resultset = cache_get(query)
if resultset then
--- Cache hit
proxy.response.type = proxy.MYSQLD_PACKET_OK
proxy.response.resultset = resultset

return proxy.PROXY_SEND_RESULT
else
--- Cache miss
proxy.queries:append(1, packet,{resultset_is_needed = true})

return proxy.PROXY_SEND_QUERY
end
end
end
end

function read_query_result(result_packet)
--- This only gets called if the proxy.queries queue is modified
cache_set(result_packet)
end

PS: Нямах намерение да пиша тази публикация, но я написах защото Благо беше казал, че ще му бъде интересно това решение. Ето Благо,  специално за теб :P

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

mysql -- Access denied for user ‘debian-sys-maint’@'localhost’ (using password: YES)

Когато преместих всички бази от един MySQL на друг(под всички се разбира и mysql базата) при стартиране или рестартиране дава следната грешка:

Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

Това се дължи на различни пароли т.е.  има два варианта

1. да се промени паролата с нова:
1.1 Файл /etc/mysql/debian.cnf
password = НОВА ПАРОЛА

1.2
# mysql -u root -p

mysql>GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'НОВА ПАРОЛА' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

1.3 /etc/init.d/mysql restart

2. да се добави паролата на предишния mysql server
2.1 Файл /etc/mysql/debian.cnf
password = ПАРОЛАТА ОТ ПРЕДИШНИЯ MySQL СЪРВЪР

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на MegaRAID Storage Manager за "Supermicro AOC-SAS2LP-H8iR" под Debian

"LSI MegaRAID SAS PCI Express ROMB (Bus 5,Dev 0)"

apt-get update && apt-get install unzip alien libstdc++5 lib64stdc++6 libxerces-c28 sun-java6-jre

cd /tmp/;
wget ftp://ftp.supermicro.com/driver/SAS/LSI/2108/MSM/Linux/9.00-00/9.00-00.zip
unzip 9.00-00.zip;
cd MSM_linux_installer-9.00-00/disk;
alien -k --scripts MegaRAID_Storage_Manager-9.00-00.noarch.rpm
dpkg -i megaraid-storage-manager_9.00-00_all.deb

Проверка дали услугата mrmonitor е пусната
/etc/init.d/mrmonitor status
както и услугата vivaldiframeworkd
/etc/init.d/vivaldiframeworkd status

Ако не са стартирани ги стартирайте ръчно:
/etc/init.d/mrmonitor start
/etc/init.d/vivaldiframeworkd start

Сега остава да се стартира графичното приложение:

"/usr/local/MegaRAID Storage Manager/startupui.sh"

Необходимо е да се смени на IP Address: 127.0.0.1" и да се въведе за потребител "root" и системната "root" парола.

Допълнителни бележки:

При мен имаше един проблем, че при опит за стартиарне на mrmonitor той не се стартираше защото нямаше следната библиотека "ibxerces-c.so.28" т.е. даваше следната грешка:

/usr/local/bin/mrmonitord
/usr/local/bin/mrmonitord: error while loading shared libraries: libxerces-c.so.28: cannot open shared object file: No such file or directory

Необходимо е да се инсталира библиотеката

apt-get install libxerces-c28

След това се стартира

ldd /usr/local/bin/mrmonitord

linux-gate.so.1 =>  (0xf77b6000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xf77a4000)
librt.so.1 => /lib/i686/cmov/librt.so.1 (0xf779b000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xf7781000)
libxerces-c.so.28 => /usr/lib/libxerces-c.so.28 (0xf73bb000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf72c6000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xf72a0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf7293000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xf714c000)
/lib/ld-linux.so.2 (0xf77b7000)
libicuuc.so.44 => /usr/lib/libicuuc.so.44 (0xf7012000)
libicudata.so.44 => /usr/lib/libicudata.so.44 (0xf61d4000)

От тук се вижда дали всички необходими библиотеки са налични, ако не са трябва да се инсталират. Ако покаже резултат като горния значи всичкое наред.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Federated storage engine . Какво представлява и как се активира

Машината за съхранение FEDERATED е нововъдена в MySQL 5 . Тя позволява на сървъра да използва таблици от други сървъри на MySQL и да ги прави достъпни за клиентите му, все едно, че са негови. Не е необходимо клиентските програми да се свързват директно с другите сървъри, за да получат достъп до таблиците им.

Едно от основните и предимства е, че позволява използването само на една заявка за достъп до таблици, които се управляват от различни сървъри. Не е необходмо свързването с всеки от тях и извличане на данните поотделно. Например може да се направи съединение между таблици от различни сървъри. Машината за съхранение FEDERATED е нова и трябва да се направят още много стъпки за оптимизирането на такива заявки, но самият факт, че и сега модат да се подават е заначително постижение.

FEDERATED служи за управление на таблици, които имат следните характеристики:

1. Всяка таблица от тип FEDERATED е представена на твърдия диск само от форматен файл с разширение frm в директоряита на базата данни.

2. FEDERATED не поддържа транзакции

3. Машината за съхранение поддържа конструкциите SELECT , DELETE , UPDATE и INSERT .
4. MySQL не заключва таблиците от тип FEDERATED по никакъв начин.
О щях да забравя за същността на публикацията.
Добавя се следния ред в /etc/mysql/my.cnf в секция [mysqld]:

[mysqld]
federated

много сложно беше :)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Активиране на event_scheduler в MySQL

За се провери дали вече не е активиран event_scheduler -- a се изпълнява:

show processlist

Ако не се види това:

Id: 1
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 8
State: Waiting on empty queue
Info: NULL

Следователно не е активирано :)). Активира се така:

/etc/mysql/my.cnf
event_scheduler = on

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Crontab -- Често използвани стойности

Няма да обяснявам какво е crontab и т.н. ,а просто ще дам примери които се добавят във /etc/crontab

#Стартира се през интервал от 15 минути от потребител: root

*/15  * * * * root /sbin/script.sh

#Стартиране на всеки кръгъл час от потребител: root

0 * * * * root /script/script.sh

#Всяка вечер във 22 часа се стартира този файл от потребител: www-data

0 22 * * * www-data php5 /var/www/script.php

#Стартира /sbin/scriptche.sh в следните времена, 2:15, 8:15, 13:15, 10:15, 23:15 с потребител: root

15 2,8,13,10,23  * * * root /sbin/scriptche.sh

PS: Специално за един приятел които изтърпя глупостите които говорих днес. Thx Dr***

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Mysql Cluster 7.1 -- Инсталиране, Конфигуриране, Използване, Debug-ване, Performance и още- Бележки

#####################################################################
################# 1. Инсталиране на NODE  ###########################
#####################################################################

groupadd mysql;
useradd -g mysql mysql;

cd /var/tmp/;

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz/from/http://mysql.mirrors.ovh.net/ftp.mysql.com/ -O mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz;

tar -C /usr/local -xzvf mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz;

ln -s /usr/local/mysql-cluster-gpl-7.1.15-linux-i686-glibc23/ /usr/local/mysql;
export PATH=$PATH:/usr/local/mysql/bin;
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/bash.bashrc;

cd /usr/local/mysql;

./scripts/mysql_install_db --user=mysql;

chown -R root .;
chown -R mysql data;
chgrp -R mysql .;

cp support-files/mysql.server /etc/init.d/mysql;
chmod +x /etc/init.d/mysql;
update-rc.d mysql defaults;

########################################################################
################# 2. Инсталиране на MANAGER  ###########################
########################################################################

cd /var/tmp/;

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz/from/http://mysql.mirrors.ovh.net/ftp.mysql.com/ -O mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz

tar zxvf mysql-cluster-gpl-7.1.15-linux-i686-glibc23.tar.gz;

cp -Rvp /var/tmp/mysql-cluster-gpl-7.1.15-linux-i686-glibc23/bin/ndb_mgm* /usr/local/bin;

chmod +x /usr/local/bin/ndb_mgm*;

##################################№№######################################
################# 3. Конфигуриране на MANAGER  ###########################
####################################№№####################################

mkdir /var/lib/mysql-cluster;
vi /var/lib/mysql-cluster/config.ini;

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

[tcp default]

[ndb_mgmd]

hostname=192.193.194.2 # Hostname or IP address of MGM node

datadir=/var/lib/mysql-cluster # Directory for MGM node log files

[ndbd]

hostname=192.193.194.3 # Hostname or IP address

datadir=/usr/local/mysql/data # Directory for this data node’s data files

[ndbd]

hostname=192.193.194.4 # Hostname or IP address

datadir=/usr/local/mysql/data # Directory for this data node’s data files

[mysqld]

hostname=192.193.194.3 # Hostname or IP address

[mysqld]

hostname=192.193.194.4 # Hostname or IP address

##################################№№######################################
################# 4. Конфигуриране на NODE     ###########################
####################################№№####################################
mkdir /var/run/mysqld/
chown -R mysql.mysql /var/run/mysqld/

vi /etc/my.cnf

[client]

port = 3306

socket = /var/run/mysqld/mysqld.sock

[mysqld]

port = 3306

socket = /var/run/mysqld/mysqld.sock

skip-locking

ndbcluster # run NDB storage engine

ndb-connectstring=192.193.194.2 # location of management server

#general_log_file        = /var/log/mysql.log
#general_log             = 1

[mysql_cluster]

ndb-connectstring=192.193.194.2 # location of management server

touch /var/log/mysql.log;chown -R mysql.adm mysql.log;

#За нова инсталация на mysql
mysqladmin -uroot password mysqlpass

#За стара инсталация на MySQL
#mysqladmin -u root -p'oldpassword' password newpass

##################################№№###########################################
################# 5. Стартиране на MySQL Cluster    ###########################
####################################№№#########################################

5.1. Стартира се на MySQL Manager
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster

5.2. Стартира се на всеки MySQL Node
/usr/local/mysql/bin/ndbd;
/etc/init.d/mysql start;

##################################№№###########################################
################# 6. Тестване на MySQL Cluster      ###########################
####################################№№#########################################
mysql -uroot
create database testdb;
use testdb;
CREATE TABLE cluster_test (i INT) ENGINE=NDBCLUSTER;
INSERT INTO cluster_test (i) VALUES (1);
SELECT * FROM cluster_test;

##################################№№###########################################
################# 7. Инсталиране на MySQL Balancer  ###########################
####################################№№#########################################

7.1. На всеки Node
mysql>
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'remoterootamri1proxypass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Тестване
mysql -uroot -h192.193.194.5 -premoterootamri1proxypass

7.2. На всеки Load balancer
## Вариант -> mysql-proxy

apt-get install mysql-proxy

vim /etc/default/mysql-proxy

ENABLED="true"
OPTIONS="
--proxy-backend-addresses=192.193.194.3:3306 \
--proxy-backend-addresses=192.193.194.4:3306 \
--daemon \
--admin-username=mysqlproxyadmin \
--admin-password=mysqlproxypass1
"

## Вариант -> haproxy
apt-get install haproxy

/etc/haproxy/haproxy.conf

global
log 127.0.0.1 daemon debug
stats socket /tmp/stats
maxconn 4096
pidfile /var/run/haproxy.pid
daemon

defaults
log global
mode tcp
option dontlognull retries 3 option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen MySQL 192.193.194.2:4040
mode tcp
option httpchk
#stats enable
#stats uri /haproxy-stats
balance roundrobin

#server mysql_master 192.193.194.3:3306
#server mysql_slave 192.193.194.4:3306

server ns1 192.193.194.3:3306 weight 10
server mail 192.193.194.4:3306 weight 10

listen stats 192.193.194.2:8000
mode http
option httpclose
balance roundrobin

stats uri     /haproxy
stats realm   Haproxy\ Statistics
stats auth    user:password

7.3. Тестване на mysql-proxy
mysql -uroot -h127.0.0.1 -P 4040 -premoterootamri1proxypass

mysql -uroot -h192.193.194.2 -P 4040 -premoterootamri1proxypass

mysql -usocial_network -h192.193.194.2 -P 4040 -pmysqlpassword

##################################№№###########################################
################# 8. Грешки при инсталиране         ###########################
####################################№№#########################################

При инсталиране на NODE

# ./scripts/mysql_install_db --user=mysql;

FATAL ERROR: Could not find mysqld

The following directories were searched:

/usr/libexec
/usr/sbin
/usr/bin

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.

Решение: rm -fr /etc/mysql

-----------------
/var/lib/mysql-cluster/ndb_1_cluster.log

2011-07-19 12:18:51 [MgmtSrvr] WARNING  --- 1011 Unable to connect with connect string: nodeid=0,localhost:1186
2011-07-19 12:18:51 [MgmtSrvr] ERROR    --- Failed to connect to ourself!

Решение:

Във файл /etc/hosts се добавя следния ред:

127.0.0.1 localhost

---------------------
mysql> create database testdb;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+-------+------+---------------------------------------------------------------------------------+
| Level | Code | Message                                                                         |
+-------+------+---------------------------------------------------------------------------------+
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB. Could not acquire global schema lock |
+-------+------+---------------------------------------------------------------------------------+

ИЛИ

mysql> CREATE TABLE cluster_test (i INT) ENGINE=NDBCLUSTER;
ERROR 157 (HY000): Could not connect to storage engine

Решение: да се рестартират услугите ndbd и mysql и да се изчакат няколко секунди за да се синхронизират услугите
----------------------------------
mysql> select * from a10_articles limit 1;
ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER
mysql> show warnings;
+-------+------+--------------------------------------------------------------------+
| Level | Code | Message                                                            |
+-------+------+--------------------------------------------------------------------+
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB                          |
| Error | 1296 | Got error 157 'Unknown error code' from NDBCLUSTER                 |
| Error | 1033 | Incorrect information in file: './social_network/a10_articles.frm' |
+-------+------+--------------------------------------------------------------------+
3 rows in set (0.00 sec)

Проблема е, че е стартиран ndbd без mysql
----------------------------------
ns1:/tmp# mysql -uroot social_network < social_network_filled.sql
ERROR 1005 (HY000) at line 1188: Can't create table 'social_network.a13_articles' (errno: 136)

В ndb_1_cluster.log лога се вижда следното

2011-07-19 13:14:24 [MgmtSrvr] INFO     --- Node 2: index-build table 218 index: 225 processed 0 rows
2011-07-19 13:14:24 [MgmtSrvr] INFO     --- Node 3: index-build table 218 index: 225 processed 0 rows

perror 136
В превод това означава: MySQL error code 136: No more room in index file

-------------------------
mysql> show warnings;
+-------+------+---------------------------------------------------------------------------------+
| Level | Code | Message                                                                         |
+-------+------+---------------------------------------------------------------------------------+
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB. Could not acquire global schema lock |
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB                                       |
+-------+------+---------------------------------------------------------------------------------+
пуснах с ndbd --initial всичките нодове и се оправи, но се затри всичко!
-------------------
ERROR 1114 (HY000) at line 402: The table 'a10_users' is full

##################################№№###########################################
################# 9. Бележки при използването на клъстера  ####################
####################################№№#########################################
Използване на аргумент --initial
/usr/local/mysql/bin/ndbd --initial ;
Само при първоначалното стартиране е добре да се ползва --initial защото това изтрива всички логове и бази данни от клъсетера

# Добавяне на потребител (На всеки нод)
#!/bin/bash
mysqlpassword="mysqlpassword";
mysql -e "CREATE DATABASE ads_network" -p;
mysql -e "GRANT ALL ON ads_network.* TO ads_network@'%' IDENTIFIED BY '$mysqlpassword' WITH GRANT OPTION;" -p
mysql -e "FLUSH PRIVILEGES;" -p;

# Рестартиране на manager-a
killall -15 ndb_mgmd;ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster --nodaemon;
При всяка промяна на конфигурационния файл "config.ini" е необходимо при изпълнението на ndb_mgmd да се добави и аргумент "--reload" т.е.

killall -15 ndb_mgmd;ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster --reload

# Рестартиране на node-a

killall -15 ndbd;/etc/init.d/mysql stop;/usr/local/mysql/bin/ndbd;/etc/init.d/mysql start;

При изпълнение на "ndb_show_tables" дава следната грешка:

Configuration error: Error : Could not alloc node id at 192.193.194.2 port 1186: No free node id found for mysqld(API).
Unable to connect to management server.

NDBT_ProgramExit: 1 -- Failed

Решение: няма достатъчно API Слотове
config.ini
[mysqld]
[mysqld]

Рестартиране , Спиране и Стартиране на node от ndb_mgm
2 restart -- Рестартира node 2
2 start -- Стартира node 2
2 stop -- Спира node 2

------------
ИЗПОЛЗВАНЕ НА DISK METHOD за клъстериране

SELECT * FROM INFORMATION_SCHEMA.FILES \G

select file_name, free_extents, total_extents from information_schema.files where file_type='datafile';

CREATE LOGFILE GROUP lgroup_ads
ADD UNDOFILE 'undo_lgroup_ads.dat'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE 2M
ENGINE NDB;

CREATE TABLESPACE ts_ads_network
ADD DATAFILE 'data_ads_network.dat'
USE LOGFILE GROUP lgroup
INITIAL_SIZE 32M
ENGINE NDB;

CREATE LOGFILE GROUP lgroup
ADD UNDOFILE 'undo_lgroup_1.dat'
INITIAL_SIZE 2M
ENGINE NDB;

ALTER LOGFILE GROUP lgroup
ADD UNDOFILE 'undo_lgroup_3.dat'
INITIAL_SIZE 4000M
ENGINE NDB;

CREATE TABLESPACE ts_ads_network
ADD DATAFILE 'data_ads_network_1.dat'
USE LOGFILE GROUP lgroup
INITIAL_SIZE 20M
ENGINE NDB;

ALTER TABLESPACE ts_ads_network
ADD DATAFILE 'data_ads_network_3.dat'
INITIAL_SIZE 4000M
ENGINE NDB;

DROP database social_network;create database social_network;use social_network;
ALTER TABLESPACE ts_social_network DROP DATAFILE 'data_social_network.dat' ENGINE NDB;
ALTER TABLESPACE ts_social_network DROP DATAFILE 'data_social_network_2.dat' ENGINE NDB;

DROP TABLESPACE ts_social_network ENGINE NDB;
DROP LOGFILE GROUP lgroup ENGINE NDB;

drop table a10_articles;
ALTER TABLESPACE ts_ads_network DROP DATAFILE 'data_ads_network.dat' ENGINE NDB;
DROP TABLESPACE ts_ads_network ENGINE NDB;
DROP LOGFILE GROUP social_network ENGINE NDB;

-----------------
CREATE TABLE `articles` (
…..
) TABLESPACE ts_ads_network STORAGE DISK ENGINE NDB AUTO_INCREMENT=9573 DEFAULT CHARSET=utf8;

find $PWD -type f -exec sed -i 's/varchar(120)/varchar(200)/g' {} \;

find $PWD -type f -exec sed -i 's/ENGINE=MyISAM/TABLESPACE ts_ads_network STORAGE DISK ENGINE NDB/g' {} \;

##################################№№###########################################
################# 10. Debug при използването на клъстера  №####################
####################################№№#########################################
/usr/local/mysql/bin/ndb_config --configinfo | grep -C 3 Index

/usr/local/mysql/bin/ndb_config --configinfo --config-file=/var/lib/mysql-cluster/config.ini|grep -C3 MaxNoOfTables

/usr/local/mysql/bin/ndb_config  --type ndbd -q Id,MaxNoOfOrderedIndexes,MaxNoOfUniqueHashIndexes -r '\n'

ndb_show_tables | grep -c OrderedIndex

ndb_mgm> ALL REPORT MEMORY
Connected to Management Server at: 192.193.194.2:1186
Node 2: Data usage is 25%(665 32K pages of total 2560)
Node 2: Index usage is 15%(370 8K pages of total 2336)
Node 3: Data usage is 25%(665 32K pages of total 2560)
Node 3: Index usage is 15%(370 8K pages of total 2336)

Стартиране на ndb_mgmd с --nodaemon за да се debugwa всичко което идва към клъстера
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster --nodaemon;

ndb_mgm> ALL DUMP 1000;

# Виждат се фазите на стартиране на нода
ndb_mgm> all status;
Node 2: starting (Last completed phase 4) (mysql-5.1.56 ndb-7.1.15)
Node 3: started (mysql-5.1.56 ndb-7.1.15)

##################################№№###########################################
################# 11. Performance при използването на клъстера  ###############
####################################№№#########################################
Чрез ndb_size ще може да се изчисли необходимото пространство за обслужването на базата която ще бъде конвертирана към NDBCluster Engine.

При стартиране на ndb_size.pl дава следната грешка:

perl /usr/local/mysql/bin/ndb_size.pl
Can't locate Class/MethodMaker.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/mysql/bin/ndb_size.pl line 58.
BEGIN failed--compilation aborted at /usr/local/mysql/bin/ndb_size.pl line 58.

Решението е:
apt-get install libclass-methodmaker-perl

Директна статистика в терминала
perl /usr/local/mysql/bin/ndb_size.pl --database=test --socket=/var/run/mysqld/mysqld.sock

Статистика в HTML файл
perl /usr/local/mysql/bin/ndb_size.pl social_network localhost root  > mysql_ndb_size_stat.html

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Ръчно сверяване на часовника под GNU/Linux

Ръчно въвеждане на дата 20.07.2011:

date +%Y%m%d -s "20110720"

Ръчно въвеждане на час 21:35:00:

date +%T -s "21:35:00"

 

Още по- лесен метод е този:

date -s "07/20/2011 21:35:00"

Друг лесен метод е(най- предпочитаният за мен) (Става ясно кое какво е):

date 072021412011.55

Извеждане стойността на хардуерния часовник:

hwclock --show
Mon 12 Mar 2012 11:43:19 PM EET  -0.969038 seconds

Синхронизация на системния часовник с хардуерния:

hwclock --systohc

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Рекурсивно използване на mput със smbclient

Идеята е, че когато искам да кача много файлове на samba ресурс (чрез smbclient) вместо да ги качам по отделно с "put" или с "mput", но да потвърждавам с "y" се използва рекурсивния начин. Защо трябва да се активира ? Защото по подразбиране рекурсивното ъплоадване е деактивирано.

Активиране на mput рекурсивно качване на файлове, чрез smbclient:

smbclient //192.168.1.100/source
Enter machine's password:
Domain=[AMR] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> recurse
smb: \> prompt
smb: \> mput *
putting file file-1.log as \file-1.log (1682.1 kb/s) (average 1682.1 kb/s)
putting file file.log as \file.log (2303.9 kb/s) (average 1979.9 kb/s)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Без www в нашите адреси чрез htaccess

Идеята е да се премахне "www." от всеки адрес т.е. когато се отвори http://www.example.com да редиректне към http://example.com

Ето няколко причини защо да не се ползва "www":

1. По- къси адреси
2. Предотвратяване възможността за дублирано съдържание

.htaccess метод за редирект от www.example.com -> example.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

.htaccess метод за редирект от example.com -> www.example.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)