超簡單的mysql多實例布置

一、基本概念
mysql下載:http://mirrors.sohu.com/mysql/MySQL-5.5/
1、MySQL多實例
就是在一臺機器上面開啟多個不同的端口,運行多個MySQL服務進程。這些MySQL多實例公用一套安裝程序,使用不同的(也可以是相同的)配置文件,啟動程序,數據文件。在提供服務時候,多實例MySQL在邏輯上看來是各自獨立的,多個實例的自身是根據配置文件對應的設定值,來取得相關硬件資源的多少。
2、應用場景
1.采用了數據偽分布式架構的原因,而項目啟動初期又不一定有那多的用戶量,為此先一組物理數據庫服務器,但部署多個實例,方便后續遷移

  1. 為規避mysql對SMP架構不支持的缺陷,使用多實例綁定處理器的辦法,把不同的數據庫分配到不同的實例上提供數據服務
  2. 一臺物理數據庫服務器支撐多個數據庫的數據服務,為提高mysql復制的從機的恢復效率,采用多實例部署
  3. 已經為雙主復制的mysql數據庫服務器架構,想部分重要業務的數據多一份異地機房的熱備份,而mysql復制暫不支持多主的復制模式,且不給用戶提供服務,為有效控制成本,會考慮異地機房部署一臺性能超好的物理服務器,甚至外加磁盤柜的方式,為此也會部署多實例;
  4. 傳統游戲行業的MMO/MMORPG,以及Web Game,每一個服都對應一個數據庫,而可能要做很多數據查詢和數據訂正的工作,為減少維護而出錯的概率,也可能采用多實例部署的方式,按區的概念分配數據庫;
    3、作用與問題
    1、有效利用服務器的資源,單個服務器資源有剩余時,可以充分利用剩余的資源提供更多的服務。
    2、資源互相爭搶問題,比如 內存 ,cpu 需要開啟 numa,并把 mysql 綁定到固定的核心上,網卡的中斷請求,資源爭用,最重要的是磁盤 IO

二、實戰步驟:
1、同步時間
2、準備mysql依賴包
3、環境準備
2.添加mysql用戶
#3.編譯安裝mysql(我這里是mysql-5.5.33-linux2.6-x86_64.tar.gz)
4、安裝MySQL多實例
5、準備配置文件
6、啟動MySQL
7、登錄mysql與一些安全措施
8、關閉MySQL
9,、提供簡易管理腳本
10、為mysql的root用戶創建密碼

1:同步時間:
yum install -y ntp
ntpdate 202.120.2.101
hwclock -w
2:準備mysql依賴包
yum install -y autoconf automake zlib libxml ncurses-devel libgcrypt libtool openssl
yum install -y
3、環境準備
3.1添加mysql用戶
groupadd mysql
useradd -g mysql mysql
mkdir -pv /data/{3306,3307,3308}
chown -R mysql.mysql /data/
3.2: 解壓mysql安裝包并初始化mysql數據庫
cd /usr/local
tar zxvf mysql-5.5.33-linux2.6-x86_64.tar.gz

ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
chown -R root.mysql mysql/*
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/
3.3:準備配置文件:
mysqld_multi --example > /data/multi.cnf #提供多配置文件模板
3.4:修改模板
vim /data/multi.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
#password = my_password

[mysqld1]
socket = /tmp/mysql1.sock
port = 3306
pid-file = /data/3306/mysql.pid
datadir = /data/3306/
#language = /usr/local/mysql/share/mysql/english
#user = unix_user1

[mysqld2]
#mysqld = /path/to/mysqld_safe
#ledir = /path/to/mysqld-binary/
#mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql2.sock
port = 3307
pid-file = /data/3307/mysql.pid
datadir = /data/3307
#language = /usr/local/mysql/share/mysql/swedish
#user = unix_user2
[mysqld3]
socket = /tmp/mysql3.sock
port = 3308
pid-file = /data/3308/mysql.pid
datadir = /data/3308/
#language = /usr/local/mysql/share/mysql/estonia
#user = unix_user3
注釋:如果有一些配置需要改動請在[mysql#]下添加相應的值就好了
改變配置文件:
cp /data/multi.cnf /etc/my.cnf
啟動mysql多實例:
mysqld_multi start 1,2,3
ss -tnul #查看監聽端口
LISTEN 0 50 :3306 :
LISTEN 0 50
:3307 :
LISTEN 0 50 :3308 :*
、登錄mysql與一些安全措施

mysql -S /tmp/mysql.sock1 #指定socket登錄

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.04 sec)

mysql> select User,Host from mysql.user;
+------+-----------+
| User | Host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | node1 |
| root | node1 |
+------+-----------+
6 rows in set (0.01 sec)

mysql> delete from mysql.user where User='';
Query OK, 2 rows affected (0.00 sec)

mysql> delete from mysql.user where Host='::1';
Query OK, 1 row affected (0.00 sec)

mysql> delete from mysql.user where Host='node1';
Query OK, 1 row affected (0.00 sec)
其余的操作類似,就不在演示

8、關閉MySQL

mysqladmin -S /tmp/mysql.sock1 shutdown 建議使用
musqld_multi --defaults-file stop [#,#]
killall mysqld 不建議使用
9,、提供簡易管理腳本

#!/bin/bash
#
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
conf=/data/multi.cnf
export PATH=$bindir:/$PATH
if test -x $bindir/mysqld_multi
then
mysqld_multi="$bindir/mysqld_multi";
else
echo "Can't execute $bindir/mysqld_multi from dir $basedir";
exit;
fi
case "$1" in
'start' )
"$mysqld_multi" --defaults-extra-file=$conf start $2
;;
'stop' )
"$mysqld_multi" --defaults-extra-file=$conf stop $2
;;
'report' )
"$mysqld_multi" --defaults-extra-file=$conf report $2
;;
'restart' )
"$mysqld_multi" --defaults-extra-file=$conf stop $2
"$mysqld_multi" --defaults-extra-file=$conf start $2
;;
*)
echo "Usage: $0 {start|stop|report|restart}" >&2
;;
esac
10、為mysql的root用戶創建密碼

mysqladmin -uroot -S /tmp/mysql.sock2 password "123456" #指定socket文件位置即可

轉載于:https://blog.51cto.com/9025736/2061905

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539617.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539617.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539617.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java程序設計計算器_Java程序設計計算器(含代碼)

Java程序課程設計任務書實用性計算器的設計與開發1、主要內容:開發一個實用型的計算器程序,實現基本的計算功能同時并進行相應的功能拓展,使其具更加人性化的功能。我們可以用其進行相應的計算功能來方便我們的學習,代替我們進行一…

mybatis配置insert/update/delete同一個模板

insert,update,delete標簽只是一個模板,在操作時是以sql語句為核心的, 即在做增/刪/改時,insert/update/delete便簽可以通用, 但做查詢時只能用 select 標簽 提倡什么操作就用什么標簽 這就是為什么 ex…

Mybatis配置文件resultMap映射啥時候可寫可不寫?

1、student實體類 public class Student {private Integer id;//編號private String name;//姓名private Double sal;//薪水public Student(){}public Student(Integer id, String name, Double sal) {this.id id;this.name name;this.sal sal;}public Integer getId() {ret…

arithmetic java_Java:Arithmetic

好吧,事實上你有方法設置變量叫get - 這顯然不是一個好主意,并且沒有縮進......但它應該有效。但是,你還沒有展示出你是如何使用它的。也許你實際上并沒有被稱為setter方法?以下是相同代碼但具有不同名稱的示例,以及使…

網絡框架 Retrofit(三)

簡單實現Retrofit(替代Okhttp) 1.定義注解參數 Documented Target(PARAMETER) Retention(RUNTIME) public interface Field {String value(); } 復制代碼Documented Target(METHOD) Retention(RUNTIME) public interface Get {String value() default &q…

Tomcat提示“XDB 的服務器 localhost 要求用戶名和密碼”

在地址欄輸入http://localhost:8080/(8080是TOMCAT的端口號)測試,系統提示“XDB 的服務器 localhost 要求用戶名和密碼”,并彈出輸入用戶、密碼的窗口,查看代碼沒問題,不解,上網上查資料,是因為…

java jqgrid json格式_jqGrid 數據之 Json

Json數據需要定義jsonReader來跟服務器端返回的數據做對應,其默認值: jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, c…

django 中靜態文件項目加載問題

問題描述: django項目中創建了多個app后,每個app中都有對應的static靜態文件。整個項目運行時這些靜態文件的加載就是一個問題,因為整個項目我只參與了一部分,項目部署之類的并沒有參與。我寫的部分的js代碼遇到點問題&#xff0c…

Erlang/OTP設計原則(文檔翻譯)

http://erlang.org/doc/design_principles/des_princ.html 圖和代碼皆源自以上鏈接中Erlang官方文檔,翻譯時的版本為20.1。 這個設計原則,其實是說用戶在設計系統的時候應遵循的標準和規范。閱讀前我一直以為寫的是作者在設計 Erlang/OTP 框架時的一些原…

存儲過程的參數可以使用sql的函數

系統已做成存儲過程,調用方法如下: crh_entry(yyyymmdd,起始時間,結束時間); 示例1:進行2016年4月10日10時到12時的測試,應寫為: exec crh_entry(20160410,10,11); 示例2:進行2016年4月8日14時到15時的…

java如何實例化集合_如何在java中實例化一個Queue對象?

Queue是一個接口,這意味著你不能直接構造一個Queue 。最好的select是構造一個已經實現Queue接口的類,如下所示: AbstractQueue , ArrayBlockingQueue , ConcurrentLinkedQueue , DelayQueue , D…

leetcode 121 股票買賣問題系列

描述: 給一些列數字,表示每條股票的價格,如果可以買賣一次(不能同一天買和賣),求最大利益(即差最大)。 其他三道問題是,如果能買賣無限次,買賣兩次&#xff0…

Mybatis-jar-lib

csdn的下載好像和我有仇,上傳資源不斷提示:請您先登錄 下載:http://pan.baidu.com/s/1pL2BAzT asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar mybatis-3.1.1.jar ----以上mybatis的--- log4j-1.2.16.jar ----以上log4j日志--…

java使用隊列實現棧思路_算法面試:隊列實現棧的方案

聲明:碼字不易,轉載請注明出處,歡迎文章下方討論交流。前言:Java數據結構與算法專題會不定時更新,歡迎各位讀者監督。本篇介紹的是如何用兩個隊列實現棧的問題。這道題作為上一篇文章算法面試:棧實現隊列的…

Uber如何使用go語言創建高效的查詢服務

在2015年初我們創建了一個微服務,它只做一件事(也確實做得很好)就是地理圍欄查詢。一年后它成了Uber高頻查詢(QPS)服務,本次要講的故事就是我們為什么創建這個服務,以及編程語言新秀Go如何幫我們…

centos7:塔建pure_ftpd虛擬用戶

2019獨角獸企業重金招聘Python工程師標準>>> 1.下載pure_ftpd,上傳服務器,目錄路徑:/usr/local/src/ 下載地址:https://pan.baidu.com/s/1kWe8FAn 2.安裝pure_ftpd cd /usr/local/srctar -xjf pure-ftpd-1.0.36.tar.bz2cd pure-ftpd-1.0.36./configure -…

java.lang.module_如何修復“java.lang.module.FindException:module java.se.ee not found”錯誤

我正在嘗試打包我的kivy應用程序(python3),但是當我運行命令buildozer -v android debug時,看到這個錯誤# Cwd /home/javier/.buildozer/android/platform/android-sdkError occurred during initialization of boot layerjava.lang.module.FindExceptio…

寒武紀芯片——有自己的SDK,支持tf、caffe、MXNet

寒武紀芯片產品中心>智能處理器IP智能處理器IP MLU智能芯片 軟件開發環境 Cambricon-1A 高性能硬件架構及軟件支持兼容Caffe、Tensorflow、MXnet等主流AI開發平臺,已多次成功流片 國際上首個成功商用的深度學習處理器IP產品,可廣泛應用于計算機視覺、…

maven ssm框架 mysql_SSM框架(IDEA+Spring+SpringMVC+Maven+Mybatis+MySQL)

【實例簡介】SSM框架(IDEASpringSpringMVCMavenMybatisMySQL),搭建SSM框架,利用mybatis-plus插件自動生成數據庫相關代碼。【實例截圖】【核心代碼】0d399d99-f108-4aaa-9c81-35b505c86e8a└── SSMManager├── pom.xml├── sql│ └── test.sql└── src…

spring框架的引入

spring框架給程序開發帶來了春天,在很多項目里,可能不用struts,不用hibernate,但往往都有spring。 why? 因為每個項目都會涉及到對象的創建和對象之間的依賴。 一、傳統的MVC開發 mvc的項目框架結構:Enti…