Godaddy промокод fb30tld

ПРОМОКОД : fb30tld

Промокод за Godaddy валиден до  8/15/2011 г.

Намаляване на цената с 30% при  закупване на следните домейни от Godaddy:

.COM, .NET, .ORG, .BIZ, и .US

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 replication slave -- Could not initialize master info structure

При change master на mysql slave  излиза следната грешка съпроводена с решение :) :

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='192.193.123.4', MASTER_USER='slaveuser', MASTER_PASSWORD='pass', MASTER_LOG_FILE='mysql-bin.000020', MASTER_LOG_POS=49869;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

mysql> reset slave;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='192.193.123.4', MASTER_USER='slaveuser', MASTER_PASSWORD='pass', MASTER_LOG_FILE='mysql-bin.000020', MASTER_LOG_POS=49869;
Query OK, 0 rows affected (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

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

Режим само за четене в mysqld

Идяета е да се стартира mysqld които да предлага само четене без запис. Това е подходящо за репликиращи схеми и други.

Първи метод :
1.1

Със Superuser т.е. root сетвамее read_only=1 или read_only=yes

mysql-h localhost-u root-p
set GLOBAL read_only = true;

Със нормален потребител притежаващ пълни права върху конкретна база изпълняваме следната заявка:

mysql> insert into x (c) values ('test_mysql_read_only_by_amri');
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

За да активираме write правата на всеки нормален потребител(изключение е само root):

mysql-h localhost-u root-p
set GLOBAL read_only = false;

1.2
Във файл /etc/mysql/my.cnf и по- точно в секция [mysqld] се добавя:

[mysqld]
read_only=1

/etc/init.d/mysql restart;

Втори метод за заключване на таблиците само за четене:

2.1
Отварят се две конзоли свързани към mysql. На втората се изпълнява(заключваме):

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.01 sec)

На първата конзола която също е свързана към mysql се прави опит за INSERT , но не става :)

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

mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

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-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)

Личен Блог на Мартин Петров