<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог компании CKVHOST &#187; Cluster</title>
	<atom:link href="http://blog.ckvhost.com/tag/cluster/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ckvhost.com</link>
	<description>Все о хостинге</description>
	<lastBuildDate>Thu, 17 Mar 2011 09:26:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dual-Master Replication в MySQL : настройка MySQL кластера из двух узлов</title>
		<link>http://blog.ckvhost.com/dual-master-replication-v-mysql-nastrojka-mysql-klastera-iz-dvux-uzlov/</link>
		<comments>http://blog.ckvhost.com/dual-master-replication-v-mysql-nastrojka-mysql-klastera-iz-dvux-uzlov/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 17:01:18 +0000</pubDate>
		<dc:creator>Алексей</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Хостинг]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.ckvhost.com/dual-master-replication-v-mysql-nastrojka-mysql-klastera-iz-dvux-uzlov/</guid>
		<description><![CDATA[Данный пример демонстрирует запуск MySQL кластера уз двух узлов на платформе Linux (запуск на других платформах мало чем отличается, хотя испытан не был). На каждом узле кластера база данных доступна в режиме чтения-записи, что позволяет выполнять как INSERT, так и SELECT запросы на двух узлах одновременно. Синхронизацию всех запросов MySQL берет на себя. Даже если [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Данный пример демонстрирует запуск MySQL кластера уз двух узлов на платформе Linux (запуск на других платформах мало чем отличается, хотя испытан не был). На каждом узле кластера база данных доступна в режиме чтения-записи, что позволяет выполнять как INSERT, так и SELECT запросы на двух узлах одновременно. Синхронизацию всех запросов MySQL берет на себя. Даже если один из узлов временно недоступен, после его появления в сети MySQL автоматически синхронизирует все данные.</p>
<p style="text-align: justify;">Предполагается, что на узлах уже установлены клиентская  (MySQL-client-community) и серверная (MySQL-server-community) части MySQL. Базы данных находятся в каталоге <span style="font-family: Courier New; font-size: small;">/var/lib/mysql/</span>. Пример успешно использован для CentOS 5.4 и MySQL 5.1.42.</p>
<p style="text-align: justify;">Пускай первый узел будет называться <em>node1</em> (IP 192.168.0.101), а второй узел – <em>node2</em> (IP 192.168.0.201). В данном примере dual-master репликация будет работать для баз данных с именами <span style="font-family: Courier New; font-size: small;">testdb1</span> и <span style="font-family: Courier New; font-size: small;">testdb2</span>. Предполагается, что для баз данных уже созданы основные пользователи.</p>
<p style="text-align: justify;">С помощью MySQL-клиента на <em>node1</em> добавляем нового пользователя <span style="font-family: Courier New; font-size: small;">repluser</span> с правами на репликацию (предполагается, что пароль <span style="font-family: Courier New; font-size: small;">pwd</span> будет изменен) :</p>
<blockquote><p>GRANT REPLICATION SLAVE ON *.* TO &#8216;repluser&#8217;@'192.168.0.201&#8242; IDENTIFIED BY &#8216;pwd&#8217;;</p></blockquote>
<p style="text-align: justify;">То же самое нужно сделать на <em>node2</em> :</p>
<blockquote><p>GRANT REPLICATION SLAVE ON *.* TO &#8216;repluser&#8217;@'192.168.0.101&#8242; IDENTIFIED BY &#8216;pwd&#8217;;</p></blockquote>
<p style="text-align: justify;">После этого сеанс MySQL-клиента можно завершить и приняться за правку конфигурационного файла MySQL (обычно, это <span style="font-family: Courier New; font-size: small;">my.ini</span>).</p>
<p style="text-align: justify;">На <em>node1</em> добавляем в секцию <span style="font-family: Courier New; font-size: small;">[mysqld]</span> следующие строки :</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">server-id = 1
log-bin = /var/lib/mysql/bin.log
log-slave-updates
log-bin-index = /var/lib/mysql/log-bin.index
log-error = /var/lib/mysql/error.log 

relay-log = /var/lib/mysql/relay.log
relay-log-info-file = /var/lib/mysql/relay-log.info
relay-log-index = /var/lib/mysql/relay-log.index 

auto_increment_increment = 2
auto_increment_offset = 1
master-host = 192.168.0.201
master-user = repluser
master-password = pwd 

replicate-do-db = testdb1
replicate-do-db = testdb2</pre>
</div>
<p style="text-align: justify;">На <em>node2</em> выполняем аналогичные действия :</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">server-id = 2
log-bin = /var/lib/mysql/bin.log
log-slave-updates
log-bin-index = /var/lib/mysql/log-bin.index
log-error = /var/lib/mysql/error.log 

relay-log = /var/lib/mysql/relay.log
relay-log-info-file = /var/lib/mysql/relay-log.info
relay-log-index = /var/lib/mysql/relay-log.index 

auto_increment_increment = 2
auto_increment_offset = 2
master-host = 192.168.0.101
master-user = repluser
master-password = pwd 

replicate-do-db = testdb1
replicate-do-db = testdb2</pre>
</div>
<p style="text-align: justify;">После сохранения конфигурационных файлов, на обоих узлах следует перезапустить MySQL-сервер :</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">[root@server01 ~]# service mysql restart</pre>
</div>
<p style="text-align: justify;">Если все настроено правильно, то при запуске в MySQL клиенте команды</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">SHOW SLAVE STATUS\G</pre>
</div>
<p style="text-align: justify;">на любом из узлов в строке Slave_IO_State должно быть написано</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">Waiting for master to send event</pre>
</div>
<p style="text-align: justify;">Теперь кластер можно использовать, например, для построения разделенного на нескольких серверах веб-сайта или других задач распределения базы данных в режиме dual-master.</p>
<p style="text-align: justify;">Если данные не реплицируются или произошла серьезная ошибка в работе кластера, следующий код можно использовать для повторного запуска MySQL в режиме dual-primary (выполнять нужно на обоих узлах) :</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre id="codeSnippet" class="csharpcode">[root@server01 ~]# service mysql stop
[root@server01 ~]# cd /var/lib/mysql/
[root@server01 ~]# rm bin.00000* error.log log-bin.index master.info relay*
[root@server01 ~]# service mysql start</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ckvhost.com/dual-master-replication-v-mysql-nastrojka-mysql-klastera-iz-dvux-uzlov/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

