Showing posts with label загальна інфа. Show all posts
Showing posts with label загальна інфа. Show all posts

9/10/2010

Mysql master-master replication

Today I’m going to write a short manual how to create failover mysql cluster.
What we need:

Server1 = master 1/slave2
Server2 = master2/slave2
Internal or external IPs (in this example I will use server1 _ip and server2_ip)
Replication user = replicau


Step-by-step how to:
Step 1.
On server 1 in my.cnf we need to add following lines

[mysqld]
#master config
Server-id =1
Log-bin = mysql-bin
binlog-do-db = test_db
… #we can add as many DB as we need to replicate
#slave config
replicate-do-db = test_db
… #we can add as many DB as we need to replicate
master-host = server2_ip
master-user= replicau
master-password =password_of_user_replicau
master-port = 3306


same lines we should add in my.cnf on server2, the only thing we should change is master-host parameter to use server1_ip instead of server2_ip and change server-id parameter
Step 2
Restart mysql servers
Step 3
On each server we need to create replication user:
Server1

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server2_ip' IDENTIFIED BY 'password';
server2

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server1_ip' IDENTIFIED BY 'password';

Step 4
Add server2 as slave to server1
- we need to set read_only parameter as ON on server1 (master 1)

mysql> SET GLOBAL read_only = ON;
mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 7984 | | |
+------------------+----------+--------------+------------------+
1 row in set (0,00 sec)
on server2

mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST = "server2_ip", MASTER_USER = "replicau", MASTER_PASSWORD = "password_of_user_replication", MASTER_LOG_FILE = "mysql-bin.000006", MASTER_LOG_POS = 7984;
mysql> slave start;


on server1

mysql> SET GLOBAL read_only = OFF;

on server2 check connection status

mysql> show slave status;

if we do not receive any errors, everything is perfect 

Step 5
Do Step 4 for connecting server 1 as slave to server2.

Step 6
Check if everything is fine, if no try from step 1 

Step 7
It’s time to have a cup of coffee/tea of a bottle of beer

6/01/2010

[FIX] #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

If you get such king of error #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

there are the steps how to fix this

1. login into your server
2. enter into mysql

set this 2 variables

set global max_allowed_packet=1000000000;
set global net_buffer_length=1000000;

3. exit from mysql

4. add this line into my.cnf

max_allowed_packet=16M

5 restart mysql

/etc/init.d/mysql restart

6. upload dump :)

5/02/2010

mielophone v2.1

btw %sabj% was updated to new v2.1

 

http://mielophone.com/

4/24/2010

mysql tuning

for high load mysql servers you most probably will need suggestion what parameter you should change to improve performance

First of all I recommend to run mysqltuner script
usage:

wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

You will be prompted to enter valid mysql credentials and after that you will see recommendation what should you tune on your mysql server

mysql optimize tables

and there I found nice perl script which can be run on your server and you can optimize tables in DB
you can download it from there

1/16/2010

Как выяснить маску подсети исходя из CIDR ?

Как выяснить маску подсети исходя из CIDR ?

В кач-ве примера будем использовать IP-адрес 213.45.64.123 с CIDR /27:

Необходимо взять кол-во бит из CIDR (в бинарном виде), разбить на 4-ре октета и перевести в десятичные.

1. запишем первые 27 бит как 1-цу, а остальные 5-ть (т.к. их всего 32 бита) как 0-ль

11111111111111111111111111100000

2. Разделим на 4-ре октета

11111111.11111111.11111111.11100000

3. Переведем в десятичную систему

255.255.255.224

Вот и все. Получили что /27 равен маске 255.255.255.224

Так же полезно просто помнить что:
сети класса A - это CIDR /8
сети класса B - это CIDR /16
сети класса С - это CIDR /24


Как по CIDR определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?

В кач-ве примера будем использовать тот же IP-адрес 213.45.64.123 с CIDR /27:

1. 32-27=5 бит

2. 2-ка в пятой степени = 32, а значит получается что рабочих IP-адресов в этой сети 30-ть (т.к. 1-ый адрес это адрес сети, а последний это broadcast)

3. Смотрим последний октет IP-адреса (213.45.64.123), в 123-х целых 32-ек укладывается 3 раза, а значит адрес сети 213.45.64.96 - это 32 умножить на 3 (32х3=96)

4. Широковещательным адресом (broadcast) будет 213.45.64.127 - это 32 умножить на 4 и отнять 1 (32х4-1=127)


Как по хосту и маске подсети определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?

В кач-ве примера будем использовать IP-адрес 192.168.32.48 с маской подсети 255.255.255.192:

1. 256-192=64, где 192 это последний октет из маски (255.255.255.192), а 64 это общее кол-во хостов в сети,
т.к. 1-ый адрес это адрес сети, а последний это broadcast получаем 62 рабочих хоста в сети.

2. Смотрим последний октет IP-адреса (192.168.32.48), в 48 целых 64-рок укладывается ноль получаем адрес сети 192.168.32.0 (0x64=0)

3. Широковещательным адресом (broadcast) будет 192.168.32.63 (64x1-1=63)
http://subnets.ru/wrapper.php?p=35#que2

11/04/2009

Install Plesk Billing standalone on win2008

There are steps that allow to install Plesk Billing standalone on win2008 server with installed on it Plesk 9.X.X

1.Create site via Plesk admin interface
Home>Domains ->Create domain ->
with enabled PHP support ->Version 5.x ->run as CGI Application
with enabled "Use dedicated pool" option
the rest parameters for own consideration
2.Make sure that is installed Zend or Ioncube support
check
C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\php.ini file
for zend_extension_ts
for example I have installed Ioncube dll to C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\ so in php.ini should be at the beginning
zend_extension_ts= "C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\ioncube_loader_win_5.2.dll"
3.Download PleskBilling installation archive http://www.parallels.com/download/plesk/billing/
and extract Plesk Billing to home folder of created site
how example
C:\inetpub\vhosts\pppbs.com\httpdocs
4.Login to Plesk admin CP interface,
Go to Home>Database Servers> Local MySQL server ->WebAdmin
create for pleskbilling mysql user and database via phpmyadmin (with privileges according to installation guide http://download.ppb.parallels.com/6.0/doc/parallels-plesk-billing-6.0-for-windows-installation-guide/index.htm)
5.Start installation of Plesk Billing by usinghttp://download.ppb.parallels.com/6.0/doc/parallels-plesk-billing-6.0-for-windows-installation-guide/index.htm
Latest step - creating of database , so it can fail due to timeout reason, for this please increase values of
default_socket_timeout and mysql.connect_timeout in C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\php.ini
After installation Plesk Billing database can have 214 tables with ~4,601 records.

Anonymous account name you may find in properties of PleskBilling site ->Feature View-> Authentication->Anonymous authentication ->Edit , via IIS Managenment, if will be problems with NTFS permissions this account you may add to the TEMP directory with modify permissions

9/12/2009

mod_dphpbb3_last_topics php warnings

 

Today after installing such pretty tool as  mod_dphpbb3_last_topics I received a ton of such errors

Warning: cannot yet handle MBCS in html_entity_decode()! in helper.php in line 130

After googling I found this article. I tried to replace:

$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); with $title = utf8_decode($title);

but it brakes UA/RUS lang. After brainstorm I made following changes in code:

Was:

$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');

Become:

$title = html_entity_decode($title);

8/20/2009

Встановлення Xen на Debian Etch 4.0

Основна стаття http://mediakey.dk/~cc/installing-xen-on-debian-etch-40/
Переклад Михайло "veselujm" Веселовський

Протягом довгого часу я випробуав багато технологій віртуалізації: Xen, VMWare, і Xen LogoMicrosoft VM. Я з впевненістю можу сказати що всі вони придатні для використання, але VMWare і Microsoft’s VM є більш вялими ніж Xen. Цих вихідних я розгорнув свій перший сервер на базі Debian Etch 4.0 і Xen. І все запрацювало з "коробки"

Тут я опишу кроки які я зробив щоб поставити Xen на Debian Etch:

sudo apt-get install xen-linux-system-2.6.18-4-xen-686 libc6-xen bridge-utils


Грузимось в нове ядро з встановленим Xen

sudo reboot


Потім настроюємо настройки мережі в
/etc/xen/xend-config.sxp. Вмикаємо network bridge:

(network-script network-bridge)


Встановлюю
xen-tools:

apt-get install xen-tools


Xen tools це пакет який включає в себе різноманітні утиліти для Xen, утиліта для створення віртуальних машин тощо.

Редагуємо настройки ядра і initrd в /etc/xen-tools/xen-tools.conf, так щоб вони були подібними до ваших системних.

Взнаємо як ядро і initrd називаються у вашій системі:

ls /boot/vmlinuz*
/boot/vmlinuz-2.6.18-4-686 /boot/vmlinuz-2.6.18-4-xen-686

і

ls /boot/initrd*
/boot/initrd.img-2.6.18-4-686 /boot/initrd.img-2.6.18-4-686.bak /boot/initrd.img-2.6.18-4-xen-686


Змінюємо рядки:


#
# Default kernel and ramdisk to use for the virtual servers
#
kernel = /boot/vmlinuz-2.6.18-4-xen-686
initrd = /boot/initrd.img-2.6.18-4-xen-686


В наступному кроці змінюємо наступні рядки в xen-tools.conf


dir = /home/xen
debootstrap = 1
size = 4Gb # Розмір диску
memory = 128Mb # Память
swap = 128Mb # Своп
fs = ext3 # використовувати файлову систему EXT3 для створення дисків
dist = etch # Стандартиний дистрибутив для встановлення
image = sparse # Визначаємо тип диску повний чи частинами

Створюємо домівки для наших віртуальних машин:

mkdir /home/xen
mkdir /home/xen/domains


Тепер ми готові до створення віртуальної машини

xen-create-image -hostname=mailserver -ip=10.0.0.21 -netmask=255.255.255.0 -gateway=10.0.0.1 -passwd


Після чого новостворену віртуалку можна запустити:

xm create mailserver.cfg


У випадку появи наступної помилки:

Error: Device 0 (vif) could not be connected. Backend device not found.


Потрібно перевірити чи ви увімкнена підтримка
network bridge, “(network-script network-bridge)”, в /etc/xen/xend-config.sxp після додавання потрібно пергрузити демон xen /etc/init.d/xend restart. Здопомогою команд “xm list” чи “xentop” можна подивитись яка віртуалка зараз крутиться:
debian5:# sudo xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 874 1 r----- 657.9
mailserver 3 128 1 -b---- 8.0


Базуючись на моєму досвіді використання і впровадження технолоїй віртуалізації , а думаю що Xen це саме те для впровадження Linux і Linux-based технологій і це показує що вони готові до використання вже тепер. Технології віртуалізації вже тепер готові до впровадження в великих компаніях і дата центрах, і вони допомагають спростити настроювання, впровадження і встановлення працівникам, І я думаю що найближчі роки технології віртуалізації будуть грати важливу роль на серверному ринку.

2/17/2009

How to flush DNS cache in Linux / Windows / Mac

Flush dns to get a new name resolution. Also flush dns cache when you can’t access a newly registered domain name. You can simply flush your dns cache anytime to get new entry. So, Flush your dns cache now.

To flush DNS cache in Microsoft Windows (Win XP, Win ME, Win 2000):-

- Start -> Run -> type cmd
- in command prompt, type ipconfig /flushdns
- Done! You Window DNS cache has just been flush.

To flush the DNS cache in Linux, restart the nscd daemon:-


- To restart the nscd daemon, type /etc/rc.d/init.d/nscd restart in your terminal
- Once you run the command your linux DNS cache will flush.

To flush the DNS cache in Mac OS X Leopard:-

- type lookupd -flushcache in your terminal to flush the DNS resolver cache.
ex: bash-2.05a$ lookupd -flushcache
- Once you run the command your DNS cache (in Mac OS X) will flush.

To flush the DNS cache in Mac OS X:-

- type dscacheutil -flushcache in your terminal to flush the DNS resolver cache.
ex: bash-2.05a$ dscacheutil -flushcache
- Once you run the command your DNS cache (in Mac OS X Leopard) will flush.

9/25/2008

Створення шаблону для Joomla! 1.5

Пропонуємо Вашій увазі невеликий мануал-введення по створенню шаблонів для Joomla! 1.5. Стаття описує базовий функціонал розділення логіки та дизайну для тих, хто займається створенням шаблонів.­

­ ­­­

Шаблон

Структура шаблону практично не змінилася. Шаблони лежать у папці /templates. У папці Вашого шаблону обов'язково повинні бути наступні файли: index.php і templateDetails.xml (саме так з D у верхньому регістрі).

Папки для CSS і опис своїх типів відображення модулів (див. нижче) називаються css і html відповідно.

Структура:

  • templates
    • my_template
      • css
      • html
      • index.php
      • templateDetails.xml

Файл templateDetails.xml містить опис шаблону (ім'я автора, дату створення та ін.) і список файлів, які містяться в шаблоні (необхідно для встановлення шаблона через Менеджер Встановлення). Файл index.php - це власне і є шаблон.

Код порожнього index.php:

<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml: dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head>   <body>   </body>
</html>


Всередині теґів <body>...</body> міститься html-зміст шаблона (можливі включення PHP-коду).



Модулі



В Joomla! 1.0.x модулі виводилися так:



<?php mosLoadModules ( 'left',-1); ?>


де:




  • left - позиція модуля,


  • -1 - тип відображення модуля.



В Joomla! 1.5 відображення модулів здійснюється наступним чином:



<jdoc:include type="modules" name="right" style="-1" />


де:




  • type="modules" - говорить про те, що виводиться модуль;


  • name="right" - вказує на позицію модуля;


  • style="-1" - вказує тип висновку модуля.



Для style="..." з'явилася можливість вказування типу виводу не тільки цифрами, але й ключовими словами.



style="table" - стандартний вивід модуля в таблиці:



<table cellpadding="0" cellspacing="0" class="moduletable">
<tr>
<th valign="top">Заголовок Модуля</th>
</tr>
<tr>
<td>Зміст Модуля</td>
</tr>
</table>


де:




  • style="horz" - горизонтальний відображення.



Не побачив різниці з style="table", хоча в офіційному мануалі сказано, що формується горизонтальне відображення модуля.



style="xhtml" - вивід модуля в одному DIV із заголовком H3:



<div class="moduletable">
<h3>Заголовок Модуля</h3>
Зміст Модуля
</div>


style="rounded" - відображення модуля в чотирьох вкладених DIV (використовується для створення закруглених кутів у модулях):



<div class="module">
<div>
<div>
<div>
<h3>Заголовок Модуля</h3>
Зміст Модуля
</div>
</div>
</div>
</div>


style="raw" - буде виведений зміст модуля без заголовка, таблиць і DIV'ів:



Зміст Модуля


В Joomla 1.5 додана можливість створювати свої типи відображення модулів.



Опис типу відображення модуля знаходиться у файлі /templates/template_folder/html/modules.php. Ім'я функції обов'язково повинне починатися з modChrome_.



Приклад відображення модулів



Створимо тип відображення style="example", у якому модулі будуть виводитися в таблиці шириною 180px, заголовок модуля має червоне тло, текст заголовка виводиться в тегах <H3>…</H3>, тіло модуля має сіре тло. Весь текст у верхньому регістрі.



Код найпростішого файлу modules.php буде таким:



<?php   defined('_JEXEC') or die('Restricted access');   function modChrome_example($module, & $params)
{   ?>   <table width="180px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="background-color:red;"><h3><?php echo $module->title ?></h3></td>
</tr>
<tr>
<td style="background-color:gray; text-transform:uppercase;"><?php echo $module->content ?></td>
</tr>
</table>   <?php   }   ?>


Контент



Відображення контента здійснюється таким чином:



В Joomla! 1.0.x



<?php mosMainBody(); ?>


В Joomla! 1.5



<jdoc:include type="component" />


Код найпростішого index.php трьохколоночного шаблону



<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml: dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head>   <body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="left"><jdoc:include type="modules" name="left" style="raw"/></td>
<td class="center"><jdoc:include type="component" /></td>
<td class="right"><jdoc:include type="modules" name="right" style="raw"/></td>
</tr>
</table>
</body>   </html>


Трюки з відображенням модулів



Завдання:


Для зареєстрованих користувачів виводимо модулі в right для всіх інші модулі в user1.



Вирішення:


Після тегу <body> пишемо



<?php $user =& JFactory::getUser(); ?>


у тілі шаблона



<?php if($user->_id) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>


Завдання:


Для користувачів групи author виводимо модулі в right для всіх інші модулі в user1.



Вирішення:


Після тегу <body> пишемо



<?php $user =& JFactory::getUser(); ?>


у тілі шаблона



<?php if($user->get('usertype') == 'Author') {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>


Завдання:


Разом з компонентом weblinks виводимо модулі в user2.



Вирішення:


Після тегу <body> пишемо



<?php  $option = JRequest::getVar( 'option' );?>


у тілі шаблона



<?php  if($option == 'com_weblinks') {?>
<jdoc:include type="modules" name="user2" style="raw"/>
<?php } ?>


Деякі змінні використовувані в шаблонах




  • $mainframe->getCfg('sitename') - назва сайту;


  • $mainframe->getCfg('mailfrom') - електронна адреса Адміністратора;


  • $mainframe->getCfg('live_site') - URL сайту;


  • $this->template - ім'я папки шаблона.



 



http://www.joomla-ua.org/content/view/113/24/

7/13/2008

qutIM - аналог qip під Linux

сабж можна скачати з оффіційного сайту
http://qutim.org:

qutIM - is new instant messenger. Project began at 2008 January and is under development right now. Main goal is to create fast and user friendly ICQ analogue client for Linux OS. Windows and Mac users will be able to use qutIM as well - it's written in C++ with Qt, so it will run on most platforms.

- Tabbed and windowed messaging modes
- Fast and uses little memory
- Lots of smiles packs
- X-statuses
- Cross platform
- Open source
- Permanent development

6/02/2008

Dummy Credit Card

Test Credit Card Account Numbers

Credit Card Type

Credit Card Number

American Express

378282246310005

American Express

371449635398431

American Express Corporate

378734493671000

Australian BankCard

5610591081018250

Diners Club

30569309025904

Diners Club

38520000023237

Discover

6011111111111117

Discover

6011000990139424

JCB

3530111333300000

JCB

3566002020360505

MasterCard

5555555555554444

MasterCard

5105105105105100

Visa

4111111111111111

Visa

4012888888881881

Visa

4222222222222

Note : Even though this number has a different character count than the other test numbers, it is the correct and functional number.

Processor-specific Cards

Dankort (PBS)

76009244561

Dankort (PBS)

5019717010103742

Switch/Solo (Paymentech)

6331101999990016

5/21/2008

Windows Live Writer у Блогері

При публікуванні записів у свій ЖЖ  я використовую Semagic. А от щоб написати щось у Блогер я змушений був користуватись веб мордою яку надає Блогер. Додавання запису у мене займає приблизно годину, що мене дуже не тішить. Промоніторивши нет я знайшов Windows Live Writer. І тепер у мене є нормальний кліент для постання топіків.

П.С. Даний запис створено у Windows Live Writer

12/14/2007

Перший Нах

Перший запис!

Для чого цей блог.
Для тих хто хоче дізнатись про адміінстрування з середини.
Для того щоб писати про улюблену справу.
Для себе і для всіх))


Попередньо у планах є написання статтей про те з чим я стикався і були проблеми зі стандартними настройками.