Maison  >  Article  >  base de données  >  Comment utiliser Amoeba pour séparer la lecture et l'écriture de la base de données MySQL

Comment utiliser Amoeba pour séparer la lecture et l'écriture de la base de données MySQL

little bottle
little bottleavant
2019-05-07 09:08:312033parcourir

Il existe de nombreuses architectures de séparation en lecture-écriture sur MySQL. Baidu utilise presque toutes mysql_proxy pour l'implémenter. Étant donné que le proxy est implémenté sur la base du langage de script Lua, de nombreux internautes ont déclaré que le proxy n'est pas efficace et instable, et qu'il n'est pas recommandé pour une utilisation dans un environnement de production
amoeba est un projet développé par Alibaba qui sépare la lecture des bases de données ; et l'écriture (la séparation de lecture et d'écriture n'en est qu'une petite fonction), car elle est écrite sur la base de Java, donc l'environnement d'exécution doit installer jdk

Tutoriels associés : Tutoriel vidéo mysql

Travail de préparation préliminaire :
1. Deux bases de données, une maître et une esclave, synchronisation maître-esclave
maître : 172.22.10.237:3306 ; 🎜>esclave : 10.4.66.58:3306 ; esclave La bibliothèque est responsable des opérations de lecture ;
amoeba : 172.22.10.237:8066 ; J'ai installé amoeba sur le serveur où se trouve la bibliothèque principale ; sur le troisième serveur ;
Tous les systèmes d'exploitation du serveur sont centos7 ;
2. Configurez et installez jdk sur le serveur où se trouve amoeba
J'ai installé jdk1.8 ; =/usr/local/java/jdk1.8.0_131

Assurez-vous de construire et de configurer ce qui précède par vous-même. Le maître et l'esclave fonctionnent normalement. Ajoutez la variable d'environnement jdk : /etc/profile;

.

Il existe de nombreuses façons d'installer amoeba. Je ne perdrai pas de temps sur l'installation ici. Téléchargez le package d'installation d'amoeba-mysql-3.0.5-RC-distribution et décompressez-le directement pour l'utiliser

Décompressez le répertoire : /usr/local/amoeba/


Comment utiliser Amoeba pour séparer la lecture et lécriture de la base de données MySQLÉvidemment, conf est le fichier de configuration, et bin est le programme de démarrage

Comme mentionné tout à l'heure, amoeba a plus de fonctions que ; séparation lecture-écriture, mais si vous utilisez uniquement la fonction de séparation lecture-écriture, il vous suffit de configurer ces fichiers : conf/dbServers.xml conf/amoeba.xml et bin/launcher

conf/dbServers.xml :

`<property name="port">3306</property>  
           #设置Amoeba要连接的mysql数据库的端口,默认是3306
    <property name="schema">testdb</property>  
          #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver
    <property name="user">test1</property>  
             #设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接
    <property name="password">111111</property>

    <property name="maxActive">500</property>  #最大连接数,默认500
    <property name="maxIdle">500</property>    #最大空闲连接数
    <property name="minIdle">1</property>    #最新空闲连接数

    <dbServer name="writedb"  parent="abstractServer">  #设置一个后端可写的数据库,这里定义为writedb,这个名字可以任意命名,后面还会用到
        <property name="ipAddress">172.22.10.237</property> #设置后端可写dbserver的ip

    <dbServer name="slave01"  parent="abstractServer">  #设置后端可读数据库
        <property name="ipAddress">10.4.66.58</property>

     <dbServer name="myslave" virtual="true">  #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave
            <property name="loadbalance">1</property>  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1
            <property name="poolNames">slave01</property>  #myslave组成员`

conf/amoeba.xml :

       #启动脚本,需要配置jdk环境变量;
        #在注释后的第一行添加:
        JAVA_HOME=/usr/local/java/jdk1.8.0_131

le lanceur est le script de démarrage si Si JAVA_HOME n'est pas configuré, même si vous configurez les variables d'environnement dans /etc/profile, vous pouvez obtenir une erreur : jdk les variables d'environnement ne sont pas configurées ;

Il existe également un fichier de configuration : jvm.properties

  #占用内存配置文件
        # -Xss参数有最小值要求,必须大于228才能启动JVM
        #修改:
            JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

Expérimenté Tout le monde dans l'exploitation et la maintenance sait que tout ce qui concerne jdk est essentiellement lié au réglage de la mémoire, et l'amibe ne fait pas exception. ;

peut maintenant être démarré :


Comment utiliser Amoeba pour séparer la lecture et lécriture de la base de données MySQLAprès le démarrage, vous pouvez voir le port 8066 de la machine :


Comment utiliser Amoeba pour séparer la lecture et lécriture de la base de données MySQLÀ ce stade, il vous suffit de transmettre le port 8066 de l'IP de la machine et d'utiliser simplement le compte et le mot de passe définis dans le fichier de configuration pour vous connecter à la base de données. au maître, et les données lues seront lues depuis l'esclave ;

Test :

Fermez la base de données principale et elle peut toujours être lue : Exécutez la commande select view ; base de données esclave, vous pouvez toujours écrire : Exécuter les commandes update et inster

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:MySQL doit-il s'engager ?Article suivant:MySQL doit-il s'engager ?