Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: DRBD dual primary mysql  (Přečteno 4335 krát)

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
DRBD dual primary mysql
« kdy: 07 Června 2012, 20:29:24 »
Zdravím,

řeším respektive spíše experimentuji s DRBD. Zprovoznil jsem DRBD a t v režimu primary-primary. V tuto chvíli bych chtěl zkusit zprovoznit mysql server na těchto dvou strojích. Nainstaloval jsem Apache2 přes tasksel. Následne jsem překopíroval /var/www na /drbd/www a následně vytvořil symbolický odkaz.

Ale nedaří jse mi zprovoznit mysql.



Zde je nastavení my.cnf

Kód: [Vybrat]

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port            = 3306
socket          = /drbd/mysql/socket/mysqld.sock

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

# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld_safe]

socket          = /drbd/mysql/socket/mysqld.sock

#socket          = /var/run/mysqld/mysqld.sock
nice            = 0
[mysqld]
#
# * Basic Settings
#

#
# * IMPORTANT
#   If you make changes to these settings and your system uses apparmor, you may
#   also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
#


datadir = /drbd/mysql/data

user            = mysql
socket          = /drbd/mysql/socket/mysqld.sock

#socket          = /var/run/mysqld/mysqld.sock
port            = 3306

# This was formally known as [safe_mysqld]. Both versions are currently parsed.

datadir = /drbd/mysql/data

user            = mysql
socket          = /drbd/mysql/socket/mysqld.sock

#socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
#datadir                = /var/lib/mysql
tmpdir          = /tmp
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
#
# * Fine Tuning
#
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed

# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#


# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id              = 1
#log_bin                        = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem


[mysqldump]
quick
quote-names






# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M


[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer              = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/






V syslogu je toto:

Kód: [Vybrat]

Jun  7 17:20:40 node2 kernel: [  952.472402] init: mysql respawning too fast, stopped
Jun  7 17:22:45 node2 kernel: [ 1076.853978] init: mysql main process (15661) terminated with status 1
Jun  7 17:22:45 node2 kernel: [ 1076.854027] init: mysql main process ended, respawning
Jun  7 17:22:45 node2 kernel: [ 1077.137708] init: mysql post-start process (15662) terminated with status 1
Jun  7 17:22:47 node2 kernel: [ 1078.898448] init: mysql main process (15713) terminated with status 1
Jun  7 17:22:47 node2 kernel: [ 1078.898497] init: mysql main process ended, respawning
Jun  7 17:22:47 node2 kernel: [ 1079.190209] init: mysql post-start process (15714) terminated with status 1
Jun  7 17:22:49 node2 kernel: [ 1080.963235] init: mysql main process (15764) terminated with status 1
Jun  7 17:22:49 node2 kernel: [ 1080.963281] init: mysql respawning too fast, stopped
Jun  7 17:32:43 node2 kernel: [ 1673.712627] init: mysql main process (23755) terminated with status 1
Jun  7 17:32:43 node2 kernel: [ 1673.712679] init: mysql main process ended, respawning
Jun  7 17:32:43 node2 kernel: [ 1674.000727] init: mysql post-start process (23756) terminated with status 1
Jun  7 17:32:45 node2 kernel: [ 1675.751586] init: mysql main process (23824) terminated with status 1
Jun  7 17:32:45 node2 kernel: [ 1675.751637] init: mysql main process ended, respawning
Jun  7 17:32:45 node2 kernel: [ 1676.044750] init: mysql post-start process (23825) terminated with status 1
Jun  7 17:32:47 node2 kernel: [ 1677.872617] init: mysql main process (23920) terminated with status 1
Jun  7 17:32:47 node2 kernel: [ 1677.872665] init: mysql respawning too fast, stopped
Jun  7 17:42:15 node2 kernel: [ 2245.212542] init: mysql pre-start process (31959) terminated with status 1
Jun  7 17:46:20 node2 kernel: [ 2489.277083] init: mysql pre-start process (3364) terminated with status 1
Jun  7 17:50:24 node2 kernel: [ 2732.823080] init: mysql pre-start process (6408) terminated with status 1
Jun  7 17:50:29 node2 kernel: [ 2738.098066] init: mysql pre-start process (6430) terminated with status 1
Jun  7 17:52:47 node2 kernel: [ 2875.554016] init: mysql pre-start process (8498) terminated with status 1
Jun  7 18:00:29 node2 kernel: [ 3336.758543] init: mysql pre-start process (14943) terminated with status 1
Jun  7 18:07:48 node2 kernel: [   11.545701] init: mysql pre-start process (857) terminated with status 1
Jun  7 18:15:33 node2 kernel: [  475.689694] init: mysql pre-start process (7886) terminated with status 1
Jun  7 18:17:36 node2 kernel: [  599.083636] init: mysql pre-start process (9433) terminated with status 1
Jun  7 18:17:40 node2 kernel: [  602.810441] init: mysql pre-start process (9455) terminated with status 1
Jun  7 18:20:20 node2 kernel: [  763.099256] init: mysql pre-start process (11477) terminated with status 1
Jun  7 18:23:10 node2 kernel: [  932.766139] init: mysql pre-start process (13518) terminated with status 1




A v /var/log/mysql/error.log jsem narazil na toto:

Kód: [Vybrat]
120607 20:23:50 InnoDB: The InnoDB memory heap is disabled
120607 20:23:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120607 20:23:50 InnoDB: Compressed tables use zlib 1.2.3.4
120607 20:23:50 InnoDB: Initializing buffer pool, size = 128.0M
120607 20:23:50 InnoDB: Completed initialization of buffer pool
120607 20:23:50 InnoDB: highest supported file format is Barracuda.
120607 20:23:50  InnoDB: Waiting for the background threads to start
120607 20:23:51 InnoDB: 1.1.8 started; log sequence number 1595675
120607 20:23:51 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
120607 20:23:53 mysqld_safe Starting mysqld daemon with databases from /drbd/mysql/data
120607 20:23:53 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
120607 20:23:53 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120607 20:23:53 InnoDB: The InnoDB memory heap is disabled
120607 20:23:53 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120607 20:23:53 InnoDB: Compressed tables use zlib 1.2.3.4
120607 20:23:53 InnoDB: Initializing buffer pool, size = 128.0M
120607 20:23:53 InnoDB: Completed initialization of buffer pool
120607 20:23:53 InnoDB: highest supported file format is Barracuda.
120607 20:23:53  InnoDB: Waiting for the background threads to start
120607 20:23:54 InnoDB: 1.1.8 started; log sequence number 1595675
120607 20:23:54 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
120607 20:23:54 mysqld_safe mysqld from pid file /drbd/mysql/data/node2.pid ended





Zkoušel jsem spustit mysql přes safe mod.
Kód: [Vybrat]
root@node2:~# mysqld_safe --user=mysql&
[1] 28125
root@node2:~# 120607 20:10:53 mysqld_safe Can't log to error log and syslog at the same time.  Remove all --log-error configuration options for --syslog to take effect.
120607 20:10:53 mysqld_safe Logging to '/var/log/mysql/error.log'.
120607 20:10:53 mysqld_safe Starting mysqld daemon with databases from /drbd/mysql/data
120607 20:10:54 mysqld_safe mysqld from pid file /drbd/mysql/data/node2.pid ended


Mohl by jste mě prosím někdo trošku nakopnout co dělám špatně?

Předem moc děkuji za reakce.
« Poslední změna: 07 Června 2012, 20:31:50 od locus »

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:DRBD dual primary mysql
« Odpověď #1 kdy: 08 Června 2012, 10:01:47 »
Jestli jsem to pochopil správně, tak jsi do /drbd nahrál jen složku /var/www ? Tzn, databázi i apache jsi instaloval na každém nodu zvlášť? Pokud ano, pak databáze běží naprosto separátně na nodu 1 a 2. Jediné, co sdílíš na obou nodech jsou data pro apache ve složce /var/www, ale nic víc..
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #2 kdy: 08 Června 2012, 11:16:21 »
Nejprve jsem nainstaloval apache2 na obou nodech zvlášť. Ale pak jsem ho vypnul a změnil jsem umístění databaze z /var/lib/mysql na /drbd/mysql/data a socket z /var/run/mysqld jsem nastavil na /drbd/mysql/soket.


Kód: [Vybrat]
root@node2:/drbd# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.5.22-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

Mysql mi v terminálu něják jede ale phpmyadmin mi zas píše že se nemůže připojit.

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #3 kdy: 08 Června 2012, 11:18:24 »
Mysql fakt jede:

Kód: [Vybrat]
root@node2:/drbd# ps ax | grep mysql
13245 ?        Ssl    0:08 /usr/sbin/mysqld
26927 pts/4    S+     0:00 grep --color=auto mysql

Ale phpmyadmin ee

Toto my vypisuje phpmyadmin
#2002 Nepodařilo se přihlášení k MySQL serveru
« Poslední změna: 08 Června 2012, 11:24:08 od locus »

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #4 kdy: 08 Června 2012, 11:26:23 »
Tak sem zkusl překonfigurovat a toto jsem dostal?


Kód: [Vybrat]
Při instalaci databáze se objevila chyba:                                                                                                              │ 
 │                                                                                                                                                        │ 
 │ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)                                                                    │ 
 │                                                                                                                                                        │ 
 │ V tomto okamžiku můžete operaci zkusit zopakovat nebo přerušit. Zvolíte-li „opakovat“, budete znovu dotázáni na všechny konfigurační otázky a poté se  │ 
 │ daná operace zkusí provést znovu. Možnost „opakovat (přeskočit otázky)“ se pokusí operaci provést okamžitě bez nového kolečka otázek. Zvolíte-li       │ 
 │ „přerušit“, operace selže a abyste mohli používat balíček i nadále, musíte se vrátit ke starší verzi balíčku, nebo jej zkusit přeinstalovat,           │ 
 │ překonfigurovat nebo zasáhnout jiným způsobem. Zvolíte-li „ignorovat“, bude operace pokračovat dále a bude ignorovat všechny chyby pocházející z       │ 
 │ dbconfig-common.                                                                                                                                       │ 
 │                                                                                                                                                        │ 
 │ Další krok instalace databáze:     

Ale užicatel root tam je:

Kód: [Vybrat]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| root             | ::1       |
|                  | localhost |
| debian-sys-maint | localhost |
| phpmyadmin       | localhost |
| root             | localhost |
|                  | node2     |
| root             | node2     |
+------------------+-----------+
8 rows in set (0.01 sec)
« Poslední změna: 08 Června 2012, 11:29:25 od locus »

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:DRBD dual primary mysql
« Odpověď #5 kdy: 08 Června 2012, 11:38:21 »
Já mám takový dojem, že v tom máš trochu bordel :) Apache a mysql jsou dvě odlišné věci..

"Nejprve jsem nainstaloval apache2 na obou nodech zvlášť. Ale pak jsem ho vypnul a změnil jsem umístění databaze z /var/lib/mysql na /drbd/mysql/data a socket z /var/run/mysqld jsem nastavil na /drbd/mysql/soket."

Apache ti musí běžet na obou nodech. Na ten bych vůbec nesahal. Jen konfigurace musí být samozřejmě totožná. Případně rozjet i apache na drbd.
A teprve pak můžeš laborovat s databází...překopčit složku /var/lib/mysql atd...a samozřejmě změnit konfigurák, kde je umístění.. Nezkoušel jsem, nevím..jen tipuju. Já mám cluster s DRBD v režimu Primary/Slave a DRBD využívám jen pro sdílení zdrojových kódů (dat)...čili po přepnutí clusteru, aby byly všechny projekty i na druhém stroji. Apache je konfigurovaný na obou nodech zvlášť, ale totožně (jen sites-available a sites-enabled sdílím přes drbd taky). Databázi mám pak na uplně jiném stroji v lokální gigabitové síti.

/etc/init.d/apache2 a /etc/init.d/mysql jsou dvě odlišné služby, čili pokud řešíš mysql, tak apache bych do toho vůbec netahal..
« Poslední změna: 08 Června 2012, 11:43:48 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #6 kdy: 08 Června 2012, 11:47:07 »
No jasne vím jaký je rozdíl mezi apache2 a mysql. Tím apache2 jsem myslel spíš balík, respektiveto že jsem to instaloval pře tasksel.

No aha rád slyším že to je reálné udělat na DRBD. Ja bych právě spíš chtěl variantu s primary-primary. Četl jsem o tom a dost mě to zaujalo.

No na toto sem narazil v syslogu:

Kód: [Vybrat]
root@node2:/etc/mysql# sudo tail /var/log/syslog
Jun  8 11:17:01 node2 CRON[26392]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28508]: Upgrading MySQL tables if necessary.
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: Looking for 'mysql' as: /usr/bin/mysql
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/drbd/mysql/socket/mysqld.sock' '--port=3306' '--socket=/drbd/mysql/socket/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock'
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: /usr/bin/mysqlcheck: Got error: 1045: Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) when trying to connect
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28511]: FATAL ERROR: Upgrade failed
Jun  8 11:19:47 node2 /etc/mysql/debian-start[28525]: Checking for insecure root accounts.
Jun  8 11:39:01 node2 CRON[11763]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:DRBD dual primary mysql
« Odpověď #7 kdy: 08 Června 2012, 13:51:45 »
Musel bych se s tím trochu pohrát, mysql je úzce spjato s apparmor, nevím, jestli tam nebude třeba ještě povolit tu novou cestu /drbd...

viz výpis z apparmor

  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,


Což je cesta, kterou jsi měnil..možná stačí jen přepsat, možná ne...Ale teď mě tak napadá, že ty chceš vlastně replikovat data, ne? To se nedělá přes DRBD, ale využívá se přímo replikace mysql...což je jen nastavení mysql, které se stará o zápis dat na obou nodech..o replikaci je toho na netu celkem dost...i sám si to asi zkusím :)
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #8 kdy: 08 Června 2012, 13:59:56 »
apparmor > jsme vypnout a zákzal.


Tedy vše jsem smazal a přeinstaloval a ted mám tedy výchozí nastavení a čerstvě nainstalováno. Vychozí instalace funguje bez problému. Tedy chtěl bych se pokusit mysql databázi převést na DRBD. Moje představa je taková:

/var/run/mysqld/mysqld.sock -> /drbd/mysql/socket/mysqld.sock  (toto by měl být mysql socket)

/var/lib/mysql -> /drbd/mysql/database    (pokud jsme to dobře pochopil tak zde jsou mysql databaze uloženy)


Mým cílem je aby bylo možné na obou nodech zapisovat do databáze a aby byli na obou strojích stejný obsah databáze,

Myslíte že je to možné udělat takto?


Přímá replikace mysql? Otom jsem bohužel neslyšel? Možná by to mohlo být ono? Mohl by jsi mě trošku nasměrovat?
« Poslední změna: 08 Června 2012, 14:03:04 od locus »

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #9 kdy: 08 Června 2012, 14:51:23 »
Docela bych uvítal kdyby to bylo možné zapisovat na oba stroje zároveň. Mátě někdo vlastní zkušenost?

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re:DRBD dual primary mysql
« Odpověď #10 kdy: 08 Června 2012, 14:59:50 »
S replikací zkušenosti mám zatím jen takové, že cca tuším jak funguje..

máš virtuální IP, na tuto ti chodí požadavky. Virtuálka je vždy nasměrována na nějaký aktivní stroj (node1 nebo node2), ať už je aktivita na kterémkoliv, tak se zapíší data do DB...např na node1. Vytvoří se dočasný relay soubor, ve kterém jsou tyto změny a node2 si je ihned stáhne k sobě do své DB (čili jsou dvě separátní databáze, nikoliv jedno společné uložiště)..čímž dojde k replikaci a máš "on the fly" shodná data na obou nodech. Čili jestli se přepne aktivita na node2, budeš tam mít ta samá data...tolik teorie :)

Praxe je taková, že na to mám dokument s postupem instalace..jen bohužel jinde na stroji. O víkendu zkusím najít..možná večer
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #11 kdy: 08 Června 2012, 17:10:04 »
To by bylo super. Me spíš mrzí že jsem to již jednou ale na virtualboxu jsem již jednou zprovoznil mysql cluster pomocí drbd ale poznámky již nemám. Takže googlím a hledám podle čeho jsem se inspiroval.

locus

  • Aktivní člen
  • *
  • Příspěvků: 398
Re:DRBD dual primary mysql
« Odpověď #12 kdy: 08 Června 2012, 20:15:22 »
No tedy googlím googlím a narazil jsem na toto:

http://mike.mcmurray.co.nz/mysql-replication-on-ubuntu-with-drbd/

Behem večera to zkusím aplikovat na stroje.

 

Provoz zaštiťuje spolek OpenAlt.