#2 05.02.12 15:01
Re: MySql 5.15x Репликация без остановки master
Примерно план такой, это в теории, на практике не тестировалось:
1.Настройка конфигов мастера и слейва(параметры, включение бинарного логирования)
2. Создание пользователя для репликации и наделение его соотвествующими правами( рекомендуется прежде всего в целях безопасности)
3. Запоминаем мастер статус.
4. Делаем бекапы с master(mysqldump или snapshot), лучше ночью или рано утром, будет нагрузка на сервер.(как вариант сделать бекап одной небольшой базы и настроить репликацию под нее в качестве тестирования. Потом уже можно пробовать на всех остальных)
5. Заливаем бекапы на slave
6. Включаем режим слейва с точки сохраненной в пункте 3.
Так как мы сделали "грязный" бекап, то при репликации скорей всего столкнемся с ошибками из-за которых остановится Слейв-сервер(это из за того что производилась запись данных пока мы делали дамп).
Выводим их на slave с помощью ’show slave status \G’ (look at the ‘Last_Error’) и если мы можем их пропустить то, делаем так:
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> START SLAVE;
Продолжаем пропускать ошибки пока слей не синхронизируется с мастером.
Исправлено Tinkoff (05.02.12 15:01)
Offline
#3 05.02.12 15:41
Re: MySql 5.15x Репликация без остановки master
http://www.mysql.ru/docs/man/Replication_FAQ.html
первый вопрос
Offline
#4 05.02.12 17:56
Re: MySql 5.15x Репликация без остановки master
Ну собственно в любом случае получается будут возникать перебои, блокировок все равно не избежать.
БД как оказалось еще больше ~500 ГБ. Буду запускать master и записывать точку начала журнала, потом писать скрипт который по одной будет через mysqlhotcopy вытягивать таблицы сразу на второй сервак, благо там myisam и никакой логической целостности нет. А затем разворачивать БД на реплике и синхронизировать с пропуском ошибок. В общем надо прогонять все в тестовом режиме.
Исправлено ItStorm (05.02.12 20:29)
Offline
#6 06.02.12 01:01
Re: MySql 5.15x Репликация без остановки master
Tinkoff, ну понятно что так правильно, но кому это интересно как правильно :)))) все же любят через жопу и с геморроем, но главное чтоб клиенту было удобно и красиво.
Не, LVM нет, да и сомнительно это по быстроте + сложно будет объем найти такой на конечном серваке, т.к. на master много БД лежит порядка нескольких ТБ, но мне нужно 1 всего.
Вообщем сделал в тестовом режиме на 10 гиговой БД. Все шустро получилось. Больше времени потратил на перенос папки БД на реплике с домашней папки в директорию с базами. Вообще в "боевом режиме" надо будет сразу конечную папку делать по нужному пути.
Кстати отдельное спасибо за это:
Tinkoff написал(а):
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
а то пришлось бы искать ))
Offline
#7 28.02.12 13:32
Re: MySql 5.15x Репликация без остановки master
Возникла новая непредвиденная херня, реплика отстает все сильнее и сильнее. Слабый RAID по сравнению с мастером, отставание в неделю ~ 100Гб. Как оптимизировать слейв??? Что поменять в параметрах? Там xeon 4 ядра 8 Гб RAM, при этом они не загружены, а скорость диска 13Мб/c и выше не лезет.
Код::
+-----------------------------------------+-------------------------------------------------------------------------------------------+ | Variable_name | Value | +-----------------------------------------+-------------------------------------------------------------------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | /usr/local/ | | big_tables | OFF | | binlog_cache_size | 32768 | | binlog_direct_non_transactional_updates | OFF | | binlog_format | STATEMENT | | bulk_insert_buffer_size | 8388608 | | character_set_client | cp1251 | | character_set_connection | cp1251 | | character_set_database | cp1251 | | character_set_filesystem | binary | | character_set_results | cp1251 | | character_set_server | cp1251 | | character_set_system | utf8 | | character_sets_dir | / | | collation_connection | cp1251_general_ci | | collation_database | cp1251_general_ci | | collation_server | cp1251_general_ci | | completion_type | 0 | | concurrent_insert | 1 | | connect_timeout | 10 | | datadir | | | date_format | %Y-%m-%d | | datetime_format | %Y-%m-%d %H:%i:%s | | default_week_format | 0 | | delay_key_write | ALL | | delayed_insert_limit | 100 | | delayed_insert_timeout | 300 | | delayed_queue_size | 1000 | | div_precision_increment | 4 | | engine_condition_pushdown | ON | | error_count | 0 | | event_scheduler | OFF | | expire_logs_days | 0 | | flush | OFF | | flush_time | 0 | | foreign_key_checks | ON | | ft_boolean_syntax | + -><()~*:""&| | | ft_max_word_len | 84 | | ft_min_word_len | 4 | | ft_query_expansion_limit | 20 | | ft_stopword_file | (built-in) | | general_log | OFF | | general_log_file | | | group_concat_max_len | 1024 | | have_community_features | YES | | have_compress | YES | | have_crypt | YES | | have_csv | YES | | have_dynamic_loading | YES | | have_geometry | YES | | have_innodb | YES | | have_ndbcluster | NO | | have_openssl | NO | | have_partitioning | YES | | have_query_cache | YES | | have_rtree_keys | YES | | have_ssl | NO | | have_symlink | YES | | hostname | | | identity | 0 | | ignore_builtin_innodb | OFF | | init_connect | | | init_file | | | init_slave | | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 1048576 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_buffer_pool_size | 8388608 | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | | | innodb_doublewrite | ON | | innodb_fast_shutdown | 1 | | innodb_file_io_threads | 4 | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 1 | | innodb_flush_method | | | innodb_force_recovery | 0 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 90 | | innodb_max_purge_lag | 0 | | innodb_mirrored_log_groups | 1 | | innodb_open_files | 300 | | innodb_rollback_on_timeout | OFF | | innodb_stats_method | nulls_equal | | innodb_stats_on_metadata | ON | | innodb_support_xa | ON | | innodb_sync_spin_loops | 20 | | innodb_table_locks | ON | | innodb_thread_concurrency | 8 | | innodb_thread_sleep_delay | 10000 | | innodb_use_legacy_cardinality_algorithm | ON | | insert_id | 0 | | interactive_timeout | 28800 | | join_buffer_size | 131072 | | keep_files_on_create | OFF | | key_buffer_size | 1073741824 | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit | 100 | | language | /usr/local/share/mysql/english/ | | large_files_support | ON | | large_page_size | 0 | | large_pages | OFF | | last_insert_id | 0 | | lc_time_names | en_US | | license | GPL | | local_infile | ON | | locked_in_memory | OFF | | log | OFF | | log_bin | OFF | | log_bin_trust_function_creators | OFF | | log_bin_trust_routine_creators | OFF | | log_error | | | log_output | FILE | | log_queries_not_using_indexes | OFF | | log_slave_updates | OFF | | log_slow_queries | OFF | | log_warnings | 1 | | long_query_time | 10.000000 | | low_priority_updates | OFF | | lower_case_file_system | OFF | | lower_case_table_names | 0 | | max_allowed_packet | 1048576 | | max_binlog_cache_size | 18446744073709547520 | | max_binlog_size | 1073741824 | | max_connect_errors | 10 | | max_connections | 500 | | max_delayed_threads | 20 | | max_error_count | 64 | | max_heap_table_size | 16777216 | | max_insert_delayed_threads | 20 | | max_join_size | 18446744073709551615 | | max_length_for_sort_data | 1024 | | max_long_data_size | 1048576 | | max_prepared_stmt_count | 16382 | | max_relay_log_size | 0 | | max_seeks_for_key | 18446744073709551615 | | max_sort_length | 1024 | | max_sp_recursion_depth | 0 | | max_tmp_tables | 32 | | max_user_connections | 0 | | max_write_lock_count | 18446744073709551615 | | min_examined_row_limit | 0 | | multi_range_count | 256 | | myisam_data_pointer_size | 6 | | myisam_max_sort_file_size | 9223372036853727232 | | myisam_mmap_size | 18446744073709551615 | | myisam_recover_options | OFF | | myisam_repair_threads | 1 | | myisam_sort_buffer_size | 4194304 | | myisam_stats_method | nulls_unequal | | myisam_use_mmap | OFF | | net_buffer_length | 65536 | | net_read_timeout | 30 | | net_retry_count | 1000000 | | net_write_timeout | 60 | | new | OFF | | old | OFF | | old_alter_table | OFF | | old_passwords | OFF | | open_files_limit | 11095 | | optimizer_prune_level | 1 | | optimizer_search_depth | 62 | | optimizer_switch | index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on | | pid_file | /data/mysql/tmp/mysqld.pid | | plugin_dir | /usr/local/lib/mysql/plugin | | port | 3306 | | preload_buffer_size | 32768 | | profiling | OFF | | profiling_history_size | 15 | | protocol_version | 10 | | pseudo_thread_id | 0 | | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 0 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | | rand_seed1 | | | rand_seed2 | | | range_alloc_block_size | 4096 | | read_buffer_size | 131072 | | read_only | OFF | | read_rnd_buffer_size | 262144 | | relay_log | /mysql-slow/mysql-replica-log/mysql-relay-bin | | relay_log_index | /mysql-slow/mysql-replica-log/mysql-relay-bin.index | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | | report_host | | | report_password | | | report_port | 3306 | | report_user | | | rpl_recovery_rank | 0 | | secure_auth | OFF | | secure_file_priv | | | server_id | 10 | | skip_external_locking | ON | | skip_name_resolve | OFF | | skip_networking | OFF | | skip_show_database | OFF | | slave_compressed_protocol | OFF | | slave_exec_mode | STRICT | | slave_load_tmpdir | /data/mysql/mem | | slave_net_timeout | 3600 | | slave_skip_errors | 1062 | | slave_transaction_retries | 10 | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /data/mysql/tmp/mysqld-slow.log | | socket | /data/mysql/tmp/mysql.sock | | sort_buffer_size | 4194304 | | sql_auto_is_null | ON | | sql_big_selects | ON | | sql_big_tables | OFF | | sql_buffer_result | OFF | | sql_log_bin | ON | | sql_log_off | OFF | | sql_log_update | ON | | sql_low_priority_updates | OFF | | sql_max_join_size | 18446744073709551615 | | sql_mode | | | sql_notes | ON | | sql_quote_show_create | ON | | sql_safe_updates | OFF | | sql_select_limit | 18446744073709551615 | | sql_slave_skip_counter | | | sql_warnings | OFF | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | | storage_engine | MyISAM | | sync_binlog | 0 | | sync_frm | ON | | system_time_zone | MSK | | table_definition_cache | 256 | | table_lock_wait_timeout | 50 | | table_open_cache | 1024 | | table_type | MyISAM | | thread_cache_size | 0 | | thread_handling | one-thread-per-connection | | thread_stack | 262144 | | time_format | %H:%i:%s | | time_zone | SYSTEM | | timed_mutexes | OFF | | timestamp | 1330408340 | | tmp_table_size | 16777216 | | tmpdir | /data/mysql/mem | | transaction_alloc_block_size | 8192 | | transaction_prealloc_size 0.81, 0.61, 0.50 up 11+18:03:29 10:25:55 | tx_isolation 3 7 | REPEATABLE-READ | | uni 8.0checks 21.8 | 3.3 67.0 | | updatable_views_wit77limit | Y19 | | version | 5.1.60 | | version_comment | FreeBSD port: mysql-server-5.1.60 | | version_compile_machine | amd64 | | version_compile_os | portbld-freebsd8.210 55.96 | | wait_timeout | 28800 | | warning_count 49 | 0 2 | +------------------------- 4--------------+-------------------------------------------------------------------------------------------+
Исправлено ItStorm (28.02.12 13:34)
Offline
#9 28.02.12 19:54
Re: MySql 5.15x Репликация без остановки master
Код::
Slave_IO_State,Master_Host,Master_User,Master_Port,Connect_Retry,Master_Log_File,Read_Master_Log_Pos,Relay_Log_File,Relay_Log_Pos,Relay_Master_Log_File,Slave_IO_Running,Slave_SQL_Running,Replicate_Do_DB,Replicate_Ignore_DB,Replicate_Do_Table,Replicate_Ignore_Table,Replicate_Wild_Do_Table,Replicate_Wild_Ignore_Table,Last_Errno,Last_Error,Skip_Counter,Exec_Master_Log_Pos,Relay_Log_Space,Until_Condition,Until_Log_File,Until_Log_Pos,Master_SSL_Allowed,Master_SSL_CA_File,Master_SSL_CA_Path,Master_SSL_Cert,Master_SSL_Cipher,Master_SSL_Key,Seconds_Behind_Master,Master_SSL_Verify_Server_Cert,Last_IO_Errno,Last_IO_Error,Last_SQL_Errno,Last_SQL_Error "Waiting for master to send event",serv.ru,user,3366,60,binary_log.000242,455100636,mysql-relay-bin.000033,412615656,binary_log.000138,Yes,Yes,,,,,,,0,,0,412615510,112124355491,None,,0,No,,,,,,603104,No,0,,0,
Причем он 80% времени висит в состоянии Waiting for master to send event
Offline

