Mysql主從搭建mysql
主從複製能夠使MySQL數據庫主服務器的主數據庫,複製到一個或多個MySQL從服務器從數據庫,默認狀況下,複製異步; 根據配置,能夠複製數據庫中的全部數據庫,選定的數據庫或甚至選定的表。
MySQL的工做方式是單進程多線程的方式,那麼線程的多寡則會極大的影響到MySQL的效率,而在早期MySQL的主從都是由單線程進行的,使得主從複製除了相關的客觀因素外還受到自身的影響;爲此在MySQL的5.7版本中對多線程主從複製來進一步的改善,在MySQL 5.7中是按照邏輯時鐘(相似CPU的處理機制)來處理多線程,甚至在半同步複製semisync中仍是使用Performance Schema表來監控複製線程;c++
先卸載系統自帶的mariadb數據庫git
yum -y remove mariadb*
Yum安裝Perconagithub
wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.22-22/binary/redhat/7/x86_64/Percona-Server-server-57-5.7.22-22.1.el7.x86_64.rpm yum install -y Percona-Server-server-57-5.7.22-22.1.el7.x86_64.rpm
192.168.253.188(主庫)配置文件sql
[client] default_character_set = utf8mb4 socket=/var/lib/mysql/mysql.sock [mysqld] port=3306 socket=/var/lib/mysql/mysql.sock basedir = /data/local/percona5.7.22 datadir = /data/local/percona5.7.22/data pid_file = /var/lib/mysql/mysql-pid.pid character_set_server = utf8mb4 default_storage_engine = InnoDB explicit_defaults_for_timestamp federated skip-name-resolve gtid-mode = ON enforce-gtid-consistency = ON log-slave-updates = ON #Innodb innodb_flush_method = O_DIRECT innodb_log_files_in_group = 2 innodb_lock_wait_timeout = 100 innodb_log_file_size = 1024M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_thread_concurrency = 8 innodb_buffer_pool_size = 5G innodb_read_io_threads = 24 innodb_write_io_threads = 24 log_bin_trust_function_creators=1 innodb_page_cleaners=8 innodb_lru_scan_depth=256 innodb_locks_unsafe_for_binlog = 1 innodb_autoinc_lock_mode = 2 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION group_concat_max_len = 18446744073709551615 # MyISAM # key_buffer_size = 1344M myisam_recover_options = FORCE,BACKUP lower_case_table_names=1 event_scheduler=1 # SAFETY # max_allowed_packet = 1024M max_connect_errors = 1000000 skip_name_resolve = 1 # Binary Logging # server_id = 200 log_bin = mysql-bin binlog_format = ROW sync_binlog = 1 # CACHES AND LIMITS # tmp_table_size = 32M max_heap_table_size = 32M max_connections = 1000 thread_cache_size = 50 open_files_limit = 65535 table_definition_cache = 4096 table_open_cache = 5000 # LOGGING # log_error = /data/logs/mysql/mysql-error.log log_queries_not_using_indexes = 0 slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/logs/mysql/mysql-slow.log # REPLICATION # relay_log = relay-bin slave_net_timeout = 60 symbolic-links = 0 transaction_isolation = READ-COMMITTED [mysql] no-auto-rehash default_character_set = utf8mb4 [xtrabackup] default-character-set = utf8mb4
192.168.253.189(從庫,190從庫也是同樣配置)配置文件數據庫
[client] default_character_set = utf8mb4 socket=/var/lib/mysql/mysql.sock [mysqld] port=3306 socket=/var/lib/mysql/mysql.sock basedir = /data/local/percona5.7.22 datadir = /data/local/percona5.7.22/data pid_file = /var/lib/mysql/mysql-pid.pid character_set_server = utf8mb4 default_storage_engine = InnoDB explicit_defaults_for_timestamp federated skip-name-resolve gtid-mode = ON enforce-gtid-consistency = ON log-slave-updates = ON slave_type_conversions="ALL_NON_LOSSY" #Innodb innodb_flush_method = O_DIRECT innodb_log_files_in_group = 2 innodb_lock_wait_timeout = 100 innodb_log_file_size = 1024M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_thread_concurrency = 8 innodb_buffer_pool_size = 5G innodb_read_io_threads = 24 innodb_write_io_threads = 24 log_bin_trust_function_creators=1 innodb_page_cleaners=4 innodb_lru_scan_depth=256 innodb_buffer_pool_instances=2 innodb_locks_unsafe_for_binlog = 1 innodb_autoinc_lock_mode = 2 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION group_concat_max_len = 18446744073709551615 # MyISAM # key_buffer_size = 1344M myisam_recover_options = FORCE,BACKUP lower_case_table_names=1 event_scheduler=1 slave_pending_jobs_size_max = 1344M # SAFETY # max_allowed_packet = 512M max_connect_errors = 1000000 skip_name_resolve = 1 slave-skip-errors=1007,1008,1032,1062 # Binary Logging # server_id = 201 log_bin = mysql-bin binlog_format = ROW sync_binlog = 1 # CACHES AND LIMITS # tmp_table_size = 32M max_heap_table_size = 32M max_connections = 1000 thread_cache_size = 50 open_files_limit = 65535 table_definition_cache = 4096 table_open_cache = 5000 # LOGGING # log_error = /data/logs/mysql/mysql-error.log log_queries_not_using_indexes = 0 slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/logs/mysql/mysql-slow.log # REPLICATION # relay_log = relay-bin slave_net_timeout = 60 symbolic-links = 0 # slave slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON [mysql] no-auto-rehash default_character_set = utf8mb4 [xtrabackup] default-character-set = utf8mb4
server_id三臺數據庫要設置成不一樣vim
啓動mysql 服務器
systemctl start mysql.service
查詢初始化密碼多線程
grep "password" /var/log/mysqld.log
修改root密碼異步
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
使用Atlas實現讀寫分離
環境安裝
yum -y install libevent glib2 lua gcc gcc-c++ autoconf mysql-devel libtool pkgconfig ncurses ncurses-devel libevent-devel
下載Atlas包
wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
安裝atlas
yum install Atlas-2.2.1.el6.x86_64.rpm -y
#ll /usr/local/mysql-proxy/ total 4 -rw-r--r-- 1 root root 402 Sep 11 14:59 \ drwxr-xr-x 2 root root 75 Sep 10 14:24 bin drwxr-xr-x 2 root root 22 Sep 11 14:59 conf drwxr-xr-x 3 root root 331 Sep 10 14:14 lib drwxr-xr-x 2 root root 58 Sep 11 14:59 log
bin目錄下放的都是可執行文件
「test.cnf」只有一個文件,用來配置代理的,能夠使用vim來編輯
lib目錄下放的是一些包,以及Atlas的依賴
log目錄下放的是日誌,如報錯等錯誤信息的記錄
使用encrypt來對數據庫的密碼進行加密,帳號:aadminproxy,密碼:123456
/usr/local/mysql-proxy/bin/encrypt 123456 XXfVpJOzMdITLHv26rAgv
配置atlas
vim /usr/local/mysql-proxy/conf/test.cnf [mysql-proxy] admin-username = root admin-password = admin123 proxy-backend-addresses = 192.168.253.188:3306 proxy-read-only-backend-addresses = 192.168.253.189:3306@1,192.168.253.190:3306@2 pwds = aadminproxy:XXfVpJOzMdITLHv26rAgv daemon = true keepalive = true event-threads = 8 log-level = message log-path = /usr/local/mysql-proxy/log sql-log=ON proxy-address = 0.0.0.0:8066 admin-address = 0.0.0.0:2345 charset=utf8
啓動
/usr/local/mysql-proxy/bin/mysql-proxyd test start
更新有趣IT資訊,乾貨,關注下面公衆號吧,互聯網愛好者必備公衆號