主頁 > 資料庫 > 安裝配置mysql:雙主雙從---資料庫的日志檔案

安裝配置mysql:雙主雙從---資料庫的日志檔案

2021-02-10 15:24:09 資料庫

192.168.68.160、192.168.68.162  互為主從關系
192.168.68.163、192.168.68.164  從庫
安裝資料庫:

yum install mariadb mariadb-server -y
修改my.cnf組態檔:
vim /etc/my.cnf
    server-id=1  #每臺資料庫的id不能相同!!
    log-bin=mysql-bin
    relay-log=relay-log

開啟資料庫:

systemctl enable mariadb    #開機自啟
systemctl start mariadb     #啟動

在192.168.68.160、192.168.68.162:操作互為主從
mysql 中查看 mysql 二進制日志資訊并授權:
192.168.68.160部署:

MariaDB [(none)]> show master status;
+-----------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.00004 |      245 |				|				   |
+-----------------+----------+--------------+------------------+

MariaDB [(none)]> grant all on *.* to lzg@'%' identified by '123456';																	'
MariaDB [(none)]> stop slave;
MariaDB [(none)]> change master to master_host='192.168.68.162',master_user='lzg',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=255;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status \G;
    顯示下方為雙Yes則主從配置成功:
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

192.168.68.162 部署:

MariaDB [(none)]> show master status;
+-----------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.00003 |      255 |				|				   |
+-----------------+----------+--------------+------------------+

MariaDB [(none)]> grant all on *.* to lzg@'%' identified by '123456';															'
MariaDB [(none)]> stop slave;
MariaDB [(none)]> change master to master_host='192.168.68.100',master_user='lzg',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=245;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status \G;
    顯示下方為雙Yes則主從配置成功:
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

部署高可用:keepalived

yum install keepalived -y

修改keepalived.conf組態檔:

! Configuration File for keepalived
  
global_defs {
  # Keepalived process identifier
  lvs_id haproxy_DH
}
  
# Script used to check if HAProxy is running
vrrp_script check_mysql {
  script "pidof mysqld"
  interval 2
  weight 20}
 
# Virtual interface br-OAM
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance mysql {
  state BACKUP
  interface ens33
  virtual_router_id 98
   priority 10
  # The virtual ip address shared between the two loadbalancers
  virtual_ipaddress {
     192.168.68.100/24
   }
   track_script {
    check_mysql
  }
} 

啟動keepalived:

systemctl enable keepalived    #開機自啟
systemctl start keepadived    #啟動 

測驗是否成功啟動VIP:

inet 192.168.68.100/24 scope global secondary ens33

安裝部署從庫: 192.168.68.163、192.168.68.164

yum install mariadb mariadb-server -y

修改 my.cnf 組態檔:

vim /etc/my.cnf
    server-id=1
    log-bin=mysql-bin
    relay-log=relay-log 

啟動資料庫:

systemctl enable mariadb    #開機自啟
systemctl start mariadb     #啟動

在192.168.68.163、192.168.68.164 mysql 授權:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> change master to master_host='192.168.68.100',master_user='lzg',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=245;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status \G;
    顯示下方為雙Yes則主從配置成功:
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

開啟mysql查詢快取:
方法一:{  修改組態檔:

vim /etc/my.cnf

[mysqld]
query_cache_type = 1
query_cache_size = 100000

}
修改之后需要重啟mysql才能生效,
方法二:{  Sql命令式修改

mysql> set global query_cache_type=1;
mysql> set global_cache_size=200000;<br>mysql> show variables like '%query_cache%';

+-------------------------------+---------+
| Variable_name                 | Value   |
+-------------------------------+---------+
| have_query_cache              | YES     | 
| query_cache_limit             | 1048576 | 
| query_cache_min_res_unit      | 4096    |
| query_cache_size       		| 199680  |
| query_cache_type              | NO      |
| query_cache_wlock_invalidate  | OFF     |
+-------------------------------+---------+

}

mysql> show variables like '%query_cache%';

+-------------------------------+---------+
| Variable_name                 | Value   |
+-------------------------------+---------+
| have_query_cache              | YES     | 
| query_cache_limit             | 1048576 | 
| query_cache_min_res_unit      | 4096    |
| query_cache_size       		| 199680  |
| query_cache_type              | NO      |
| query_cache_wlock_invalidate  | OFF     |
+-------------------------------+---------+

資料庫慢查詢日志:

修改引數:

# vi /etc/my.cnf
    [mysqld]
    slow_query_log = 1
    long_query_time = 1
# service mysqld restart

臨時配置開啟:

mysql> set  global  slow_query_log='ON';

設定日志存放目錄:

mysql> set  slow_query_log_file='/var/lib/mysql/mysql-slow.log';

設定時間:

mysql> set  long_query_time=0.1;  

查看具體資訊:

mysql> show variables like '%quer%';

+-------------------------------+---------------------------------+
| Variable_name                 | Value                           |
+-------------------------------+---------------------------------+
| ft_query_expansion_limit      | 20                              |
| have_query_cache              | YES                             |
| log_queries_not_using_indexes | OFF                             |
| log_slow_queries       		| OFF                             |
| long_query_time               | 0.100000                        |
| 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                            |
| slow_query_log                | OFF                             |
| slow_query_log_file           | /var/run/mysqld/mysqld-slow.log |
+-------------+-----------------+---------------------------------+

可以使用mysqldumpslow進行分析對慢查詢日志,或者直接cat等進行查看!!!!
驗證:

mysql> select sleep(10);

之后去存盤日志目錄查看是否生成即可,

修改資料庫字符集:

#查看當前資料庫所支持的字符集:
mysql> show charset;
#查詢當前字符編碼:
mysql> show  variables  like%char%;

+---------------------------+-----------------------------+
| Variable_name             | Value                       |
+---------------------------+-----------------------------+
| character_set_client      | latin1                      |
| character_set_connection  | latin1                      |
| character_set_dayabase    | latin1                      |
| character_set_filesystem  | binary                      |
| character_set_results     | latin1                      |
| character_set_server      | latin1                      |
| character_set_system      | utf8                        |
| character_sets_dir        | /usr/share/mysql/charsets/  |
+-------------+--------------+----------------------------+

引數說明:

character_set_client:客戶端請求資料的字符集,
character_set_connection:從客戶端接收到資料,然后傳輸的字符集,
character_set_database:默認資料庫的字符集,無論默認資料庫如何改變,都是這個字符集;如果沒有默認資料庫,使character_set_server指定的字符集,此引數無需設定,
character_set_filesystem:把作業系統上檔案名轉化成此字符集,即把character_set_client轉換character_set_filesystem,默認binary即可,
character_set_results:結果集的字符集,
character_set_server:資料庫服務器的默認字符集,
character_set_system:這個值總是utf8,不需要設定,存盤系統元資料的字符集,
單獨修改當前表的字符集:
mysql> alter table 表名 convert to character set utf8;
查看表的字符集:
mysql> show table status from 庫名 like 表名;
查看表中所有列的字符集:
mysql> show full columns from 表名;
設定字符集
設定字符集一般有兩種方法,一種是在創建表的時候設定字符集,另一種是表建成之后修改字符集,
創建庫的時候指定字符集:
mysql> create  database  庫名  default character set=字符集;
或者
mysql> create  database  wg charset utf8;
mysql> create database db2 default character set=utf8;
創建表的時候指定字符集:
mysql> create  table  表名(屬性) default character set=字符集;
mysql> create table test1(id int(6),name char(10)) default character set = 'gbk';
修改庫的字符集:
mysql> alter database 庫名 default character set 字符集;
mysql> alter database shiyan default character set gbk;
查看:
mysql> show create database shiyan\G
修改單獨庫的字符集:
mysql> alter database  資料庫名  default  character  set  utf8;
修改表的字符集:
mysql> alter table test1 convert to character set utf8;
查看
mysql> show create table test1\G
修改欄位的字符集:
mysql>  alter table test1 modify name char(10) character set gbk;
mysql>  show full columns from test1;

永久修改方式,修改組態檔修改:

vim  /etc/my.cnf

[mysqld]
default-character-set = utf8
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8  

資料庫的原理是:

1、兩個執行緒,一個I/O執行緒,一個SQL執行緒, i/o執行緒去請求主庫 的binlog,并將得到的binlog日志寫到relay log(中繼日志) 檔案中;
2、主庫會生成一個 log dump 執行緒,用來給從庫 i/o執行緒傳binlog;
3SQL 執行緒,會讀取relay log檔案中的日志,并決議成具體操作,來實作主從的操作一致,而最終資料一致;

資料庫的引擎是啥,有啥區別:

1、MyISAM用一個變數保存了整個表的行數,InnoDB不保存表的具體行數,執行select count(*) from table時需要全表掃描,MylSAM執行上述陳述句時只需要讀出該變數即可,速度很快,    
2、MyISAM支持全文索引,Innodb不支持全文索引,查詢效率上MyISAM要高,
3innodb支持事務,MyISAM不支持事務,
4、如果表中絕大多數都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請使用InnoDB,系統奔潰后,MyISAM恢復起來更困難,

資料庫延遲是如何產生的:

復制代碼
master可以并發,Slave_SQL_Running執行緒卻不可以,
當主庫的TPS并發較高時,產生的DDL數量超過slave一個sql執行緒所能承受的范圍,那么延時就產生了,當然還有就是可能與slave的大型query陳述句產生了鎖等待,
TPS :  是一臺資料庫服務器每秒處理的事務的個數,
DDL:資料庫定義陳述句,用來創建資料庫中的表、索引、視圖、存盤程序、觸發器等,常用的陳述句關鍵字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME,
因素:
1、從庫的配置往往沒有主庫的配置高
2、主庫支持并發寫入,而5.7之前的版本上從庫只有單執行緒SQL來完成任務,
3、MySQL主從之間的同步,并不是完全的實時同步,而是主庫提交事務之后,從庫才再來執行一遍
4、主庫上的表的某個列沒有索引,然后對這個列進行deleteupdate操作
5、網路問題,往返時延RTT較大, 

主庫宕機:

1、確保所有的relay log全部更新完畢,在每個從庫上執行show processlist
2、更新完畢后,登錄所有從庫查看master.info檔案,對比選擇pos最大的作為新的主庫,
3、然后登錄這個新的主庫,執行stop slave;進入主目錄,洗掉master.Info和relay-log.info配置my.cnf檔案開啟log-bin檔案
4、創建用于同步的用戶并授權slave
5、登錄另外一臺從庫,執行stop slave停止同步
6、執行start slave
7、修改新的master資料,測驗slave是否同步更新

從庫宕機:

1、查看從庫上mysql的錯誤日志,里面有記錄主從掛掉時的binlog資訊,
2、有了binlog和postion資訊后,只需要重新在從庫上進行change master to配置即可,配置后開啟slave狀態,沒有報錯
3、查看slave狀態,發現slave已經正常了,開始進行延時資料恢復, 

資料庫如何調優:

內核優化:根據硬體配置來進行優化 比如記憶體使用、TCP處理這方面的優化
配置引數的優化:我做過IO處理的常用引數、最大連接數設定、快取使用引數的設定、慢日志的引數的設定

慢查詢日志:

配置慢查詢功能的方式有兩種,一種是使用mysql的組態檔配置,另外一種是使用mysql命令配置,
組態檔配置:
找到[mysqld],在其下面添加如下代碼即可.
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/var/localhost-slow.log
long_query_time=0 log-queries-not-using-indexes = 1
配置好后,重啟mysql服務
使用命令配置:
這里就簡單些一個配置項就行了,其他的配置項均按照此方法配置
mysql> set slow_query_log=ON;

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/258488.html

標籤:其他

上一篇:Lua學習筆記 字串操作 string

下一篇:SQL練習52:獲取Employees中的first_name,查詢按照first_name最后兩個字母,按照升序進行排列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more