{"id":1117,"date":"2015-01-29T00:20:09","date_gmt":"2015-01-28T16:20:09","guid":{"rendered":"https:\/\/umarzuki.org\/blogku\/?p=1117"},"modified":"2015-01-29T00:20:09","modified_gmt":"2015-01-28T16:20:09","slug":"kluster-mariadb-aktif-aktif","status":"publish","type":"post","link":"https:\/\/umarzuki.org\/blog\/2015\/01\/29\/kluster-mariadb-aktif-aktif\/","title":{"rendered":"Kluster Galera MariaDB (Aktif-Aktif)"},"content":{"rendered":"<p>OS: Ubuntu 14.04<br \/>\nUntuk situasi dimana kita hanya ada 2 server yang boleh digunakan.<\/p>\n<p>2 node mariadb + 1 node garb\/arbiter (elak split-brain)<\/p>\n<p>Pastikan \/etc\/hosts ada entri ketiga-tiga node. Contoh:<\/p>\n<p>[code lang=&#8217;plain&#8217;]127.0.0.1\tlocalhost<br \/>\n127.0.1.1\tubuntu<br \/>\n192.168.56.215\tdb1<br \/>\n192.168.56.216\tdb2<br \/>\n192.168.56.217\tgarb[\/code]<\/p>\n<p>Pasang mariadb pada kedua-dua node mariadb<\/p>\n<p><code>sudo apt-key adv --recv-keys --keyserver hkp:\/\/keyserver.ubuntu.com:80 0xcbcb082a1bb943db<br \/>\nsudo add-apt-repository 'deb http:\/\/mariadb.nethub.com.hk\/\/repo\/10.0\/ubuntu trusty main'<br \/>\nsudo apt-get update<br \/>\nsudo apt-get install mariadb-galera-server galera<\/code><\/p>\n<p>Pasang garbd pada node garb<\/p>\n<p><code>sudo apt-get install galera<\/code><\/p>\n<p>Matikan service mariadb pada kedua-dua node<\/p>\n<p><code>sudo service mysql stop<\/code><\/p>\n<p>Contoh setting \/etc\/mysql\/my.cnf. Sesuaikan untuk setiap node. <code>srep_cluster_address=\"gcomm:\/\/db2?pc.wait_prim=no\"<\/code> perlu set terbalik seperti ditunjukkan.<\/p>\n<p>[code lang=&#8217;plain&#8217;][client]<br \/>\nport = 3306<br \/>\nsocket = \/var\/run\/mysqld\/mysqld.sock<\/p>\n<p>[mysqld_safe]<br \/>\nnice = 0<br \/>\nsocket = \/var\/run\/mysqld\/mysqld.sock<\/p>\n<p>[mysqld]<br \/>\nbasedir = \/var\/lib\/mysql<br \/>\nbind-address = 192.168.56.215<br \/>\nbinlog_format = ROW<br \/>\ncharacter_set_server = utf8<br \/>\ncollation_server = utf8_general_ci<br \/>\ndatadir = \/var\/lib\/mysql<br \/>\ndefault-storage-engine = InnoDB<br \/>\nexpire_logs_days = 10<br \/>\ninnodb_autoinc_lock_mode = 2<br \/>\ninnodb_buffer_pool_size = 1G<br \/>\ninnodb_log_file_size = 512M<br \/>\ninnodb_doublewrite = 1<br \/>\ninnodb_file_per_table = 1<br \/>\ninnodb_flush_log_at_trx_commit = 2<br \/>\ninnodb_lock_wait_timeout = 60<br \/>\ninnodb_locks_unsafe_for_binlog = 1<br \/>\ninnodb_stats_on_metadata = 0<br \/>\nkey_buffer = 256M<br \/>\nlc-messages-dir = \/usr\/share\/mysql<br \/>\nlock_wait_timeout = 300<br \/>\nmax_allowed_packet = 128M<br \/>\nmax_binlog_size = 128M<br \/>\nmax_connections = 64<br \/>\nmyisam-recover = BACKUP<br \/>\nmyisam_sort_buffer_size = 64M<br \/>\nnet_buffer_length = 8K<br \/>\nopen-files-limit = 65535<br \/>\npid-file = \/var\/run\/mysqld\/mysqld.pid<br \/>\nport = 3306<br \/>\nquery_cache_limit = 8M<br \/>\nquery_cache_size = 16M<br \/>\nread_buffer_size = 8M<br \/>\nread_rnd_buffer_size = 8M<br \/>\nskip-external-locking<br \/>\nsocket = \/var\/run\/mysqld\/mysqld.sock<br \/>\nsort_buffer_size = 16M<br \/>\ntable_cache = 2M<br \/>\ntable_definition_cache = 65535<br \/>\ntable_open_cache = 65535<br \/>\nthread_cache_size = 8<br \/>\nthread_concurrency = 8<br \/>\ntmpdir = \/tmp<br \/>\nuser = mysql<br \/>\nwsrep_provider=\/usr\/lib\/galera\/libgalera_smm.so<br \/>\nwsrep_cluster_address=&#8221;gcomm:\/\/db2?pc.wait_prim=no&#8221;<br \/>\nwsrep_sst_method=rsync<br \/>\nwsrep_cluster_name=&#8221;joomla_db_cluster&#8221;<\/p>\n<p>[mysqldump]<br \/>\nmax_allowed_packet = 16M<br \/>\nquick<br \/>\nquote-names<\/p>\n<p>[mysql]<\/p>\n<p>[isamchk]<br \/>\n!includedir \/etc\/mysql\/conf.d\/<br \/>\nkey_buffer = 256M<br \/>\nread_buffer = 16M<br \/>\nsort_buffer_size = 256M<br \/>\nwrite_buffer = 16M<br \/>\n[\/code]<\/p>\n<p>Pada node db1, mulakan cluster mariadb <\/p>\n<p><code>mysqld --wsrep_cluster_address=gcomm:\/\/<\/code><\/p>\n<p>Pada nod db1, salin fail debian.cnf ke nod db2<\/p>\n<p><code>scp \/etc\/mysql\/debian.cnf user1@192.168.56.216:\/home\/user1\/debian.cnf<br \/>\nsudo cp debian.cnf \/etc\/mysql\/<\/code><\/p>\n<p>Mulakan mariadb pada node2<\/p>\n<p><code>sudo service mysql start<\/code><\/p>\n<p>Cuba mulakan garbd pada nod garb<\/p>\n<p><code>sudo garbd -a gcomm:\/\/db1:4567,db2:4567?pc.wait_prim=no -g \"joomla_db_cluster\"<\/code><\/p>\n<p>Contoh setting \/etc\/default\/garb pada node garb<\/p>\n<p>[code lang=&#8217;plain&#8217;]GALERA_NODES=&#8221;db1:4567 db2:4567&#8243;<br \/>\nGALERA_GROUP=&#8221;joomla_db_cluster&#8221;<br \/>\nGALERA_OPTIONS=&#8221;pc.wait_prim=no&#8221;<br \/>\nLOG_FILE=&#8221;\/var\/log\/garbd.log&#8221;[\/code]<\/p>\n<p>Mulakan garbd pada node garb<\/p>\n<p><code>sudo service garb start<\/code><\/p>\n<p>Matikan mariadb pada node db1<\/p>\n<p><code>sudo service mysql stop<\/code><\/p>\n<p>Mulakan semula mariadb pada node db1<\/p>\n<p><code>sudo service mysql start<\/code><\/p>\n<p>Contoh log cluster dengan kesemua node berjalan (semak dalam \/var\/log\/garb.log)<\/p>\n<p>[code lang=&#8217;plain&#8217;]2015-01-28 22:46:37.658  INFO: Quorum results:<br \/>\n\tversion    = 3,<br \/>\n\tcomponent  = PRIMARY,<br \/>\n\tconf_id    = 6,<br \/>\n\tmembers    = 3\/3 (joined\/total),<br \/>\n\tact_id     = 0,<br \/>\n\tlast_appl. = 0,<br \/>\n\tprotocols  = 0\/5\/3 (gcs\/repl\/appl),<br \/>\n\tgroup UUID = 1828d0b2-a6ef-11e4-bf0a-3217c0075751<br \/>\n2015-01-28 22:46:37.658  INFO: Flow-control interval: [9999999, 9999999]<br \/>\n2015-01-28 22:46:37.665  INFO: Member 2.0 (db1) synced with group.[\/code]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OS: Ubuntu 14.04 Untuk situasi dimana kita hanya ada 2 server yang boleh digunakan. 2 node mariadb + 1 node garb\/arbiter (elak split-brain) Pastikan \/etc\/hosts ada entri ketiga-tiga node. Contoh: [code lang=&#8217;plain&#8217;]127.0.0.1 localhost 127.0.1.1 ubuntu 192.168.56.215 db1 192.168.56.216 db2 192.168.56.217 garb[\/code] Pasang mariadb pada kedua-dua node mariadb sudo apt-key adv &#8211;recv-keys &#8211;keyserver hkp:\/\/keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,44],"tags":[352,353,354,355,356,357,149,29],"class_list":["post-1117","post","type-post","status-publish","format-standard","hentry","category-linux","category-pengkalan-data","tag-352","tag-active-active","tag-cluster","tag-galera","tag-high-availability","tag-mariadb","tag-mysql","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/posts\/1117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/comments?post=1117"}],"version-history":[{"count":0,"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/posts\/1117\/revisions"}],"wp:attachment":[{"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/media?parent=1117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/categories?post=1117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umarzuki.org\/blog\/wp-json\/wp\/v2\/tags?post=1117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}