zoukankan      html  css  js  c++  java
  • mysql架构精选

    ◆主从架构
    1.安装服务(主从)
    yum -y install mysql*
    /etc/init.d/mysqld start
    2.修改配置文件:/etc/my.conf(主从)
    vi /etc/my.conf
    log-bin=mysql-bin ###开启二进制日志文件
    server-id=131 ###声明服务器ID,不重复即可
    /etc/init.d/mysqld restart
    3.1进入主—数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##创建从服务器登录用户
    ##grant replication slave on *.* to '用户'@'%' identified by '密码';
    grant replication slave on *.* to 'master'@'%' identified by '123';
    show master status; ##查看二进制文件名,以及大小
    3.2进入从-数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##确定从主服务器同步
    ##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
    change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
    ##启动同步
    start slave;
    ##查看同步服务开启状态
    show slave statusG;
    4.测试
    主:create database aa;
    从:show databases;
    ◆主从从架构
    1.安装服务(主从)
    yum -y install mysql*
    /etc/init.d/mysqld start
    2.修改配置文件:/etc/my.conf(主从)
    vi /etc/my.conf
    log-bin=mysql-bin ###开启二进制日志文件
    server-id=131 ###声明服务器ID,不重复即可
    /etc/init.d/mysqld restart
    3.1进入主—数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##创建从服务器登录用户
    ##grant replication slave on *.* to '用户'@'%' identified by '密码';
    grant replication slave on *.* to 'master'@'%' identified by '123';
    show master status; ##查看二进制文件名,以及大小
    3.2进入从1-数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##确定从主服务器同步
    ##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
    change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
    ##启动同步
    start slave;
    ##查看同步服务开启状态
    show slave statusG;
    3.3进入从2-数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##确定从主服务器同步
    ##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
    change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
    ##启动同步
    start slave;
    ##查看同步服务开启状态
    show slave statusG;
    4.测试
    主:create database bb;
    从1:show databases;
    从2:show databases;
    ◆主主架构(互为主从)
    ###服务器有数据的情况,需要手动先同步一致,cp重定向到mysql
    1.安装服务(主主)
    yum -y install mysql*
    /etc/init.d/mysqld start
    2.修改配置文件:/etc/my.conf(主主)
    vi /etc/my.conf
    log-bin=mysql-bin ###开启二进制日志文件
    server-id=131 ###声明服务器ID,不重复即可
    ###下面几个看实际情况使用,实验环境可忽略
    replicate-do-db=test ###需要同步的数据库
    binlog-ignore-db=mysql ###不需要同步的数据库
    binlog-ignore-db=information_schema ##不需要同步的数据库
    auto-increment-increment=2 ###为了保证含有自增长的不会冲突
    auto-increment-offset=1 ###为了保证含有自增长的不会冲突
    log-slave-updates=true
    /etc/init.d/mysqld restart
    3.1进入主1—数据库 ip:192.168.116.131
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##创建从服务器登录用户
    ##grant replication slave on *.* to '用户'@'%' identified by '密码';
    grant replication slave on *.* to 'master'@'%' identified by '123';
    flush privileges;
    show master status; ##查看二进制文件名,以及大小
    ##确定从主服务器同步
    ##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
    change master to master_host='192.168.116.132',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=384;
    ##启动同步
    start slave;
    ##查看同步服务开启状态
    show slave statusG;
    3.2进入主2-数据库 ip:192.168.116.132
    mysqladmin -uroot password '123'
    mysql -uroot –p
    ##创建从服务器登录用户
    ##grant replication slave on *.* to '用户'@'%' identified by '密码';
    grant replication slave on *.* to 'slave'@'%' identified by '123';
    show master status; ##查看二进制文件名,以及大小
    ##确定从主服务器同步
    ##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
    change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
    ##启动同步
    start slave;
    ##查看同步服务开启状态
    show slave statusG;
    4.测试
    主1:create database aa;show databases;主2:show databases;
    主2:create database aa;show databases;主1:show databases;
    ◆主主从架构
    1.安装服务(主主从)
    yum -y install mysql*
    /etc/init.d/mysqld start
    2.主配置文件:/etc/my.conf
    2.1两台主服务器
    vi /etc/my.conf
    log-bin=mysql-bin ###开启二进制日志文件
    server-id=131和132 ###声明服务器ID,不重复即可
    /etc/init.d/mysqld restart
    2.2从服务器
    vi /etc/my.cnf
    [mysqld_multi]
    mysqld=/usr/bin/mysqld_safe
    mysqladmin=/usr/bin/mysqladmin
    log=/tmp/multi.log
    [mysqld131]
    port=3306
    pid-file=/var/lib/mysqla/mysqld.pid
    datadir=/var/lib/mysqla
    socket=/var/lib/mysqla/mysql.sock
    server-id=129
    user=mysql
    [mysqld132]
    port=3307
    pid-file=/var/lib/mysqlb/mysqld.pid
    datadir=/var/lib/mysqlb
    socket=/var/lib/mysqlb/mysql.sock
    server-id=129
    user=mysql
    3.1 主1进入数据库
    mysqladmin -uroot password '123'
    mysql -uroot -p
    grant replication slave on *.* to 'master1'@'%' identified by '123';
    show master status;
    3.2 主2进入数据库
    mysqladmin -uroot password '123'
    mysql -uroot -p
    grant replication slave on *.* to 'master2'@'%' identified by '123';
    show master status;
    3.3 从服务器
    mysql_install_db --datadir=/var/lib/mysqla --user=mysql ###初始化mysqla数据库
    mysql_install_db --datadir=/var/lib/mysqlb --user=mysql ###初始化mysqlb数据库
    cd /var/lib
    chown -R mysql /var/lib/mysqla/ ##修改文件权限
    chown -R mysql /var/lib/mysqlb/ ##修改文件权限
    mysqld_multi --defaults-file=/etc/my.cnf start 131 ##主1id号,开起数据库01,为主1备份
    mysqld_multi --defaults-file=/etc/my.cnf start 132 ##主2id号,开起数据库02,为主2备份
    测试端口:netstat -an |grep 3306&3307
    mysqladmin -u root password '123' -S /var/lib/mysqla/mysql.sock ##建立131数据库密码
    mysqladmin -u root password '123' -S /var/lib/mysqlb/mysql.sock ##建立132数据库密码

    ####进入mysqla ----131数据库配置
    mysql -uroot -p -S /var/lib/mysqla/mysql.sock
    change master to master_host='192.168.116.131',master_user='master1',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
    start slave;
    show slave statusG;
    exit

    ####进入mysqlb -----132数据库配置
    mysql -uroot -p -S /var/lib/mysqlb/mysql.sock
    change master to master_host='192.168.116.132',master_user='master2',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
    start slave;
    show slave statusG;
    exit
    4.测试
    主1备份测试:
    主1: create database aa;
    从:
    mysql -uroot -p -S /var/lib/mysqla/mysql.sock
    show databases;
    主2备份测试:
    主2:create database bb;
    从:
    mysql -uroot -p -S /var/lib/mysqlb/mysql.sock
    show databases;


    ◆mysql读写分离 -----amoeba
    1.两台数据库主从关系
    yum -y install mysql*
    /etc/init.d/mysqld start
    vi /etc/my.conf
    log-bin=mysql-bin ###开启二进制日志文件
    server-id=131 ###声明服务器ID,不重复即可
    /etc/init.d/mysqld restart
    ##主数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    grant all privileges on *.* to 'amoeba'@'%' identified by '123';
    show master status; ##查看二进制文件名,以及大小

    ###从数据库
    mysqladmin -uroot password '123'
    mysql -uroot –p
    change master to master_host='192.168.116.131',master_user='amoeba',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=382;
    grant all privileges on *.* to 'amoeba'@'%' identified by '123';

    ##查看同步服务开启状态
    show slave statusG;
    #启动同步
    start slave;
    ###测试
    主:create database aa;
    从:show databases;


    2.配置amobe服务器
    yum -y install lrzsz mysql
    rz amoeba-n.iso
    mkdir /iso
    mount -o loop amoeba-n.iso /iso/
    cp /iso/* .
    tar zxvf jdk-7u40-linux-x64.gz
    mv jdk1.7.0_40/ /usr/local/jdk
    vi /etc/profile
    #JDK
    JAVA_HOME=//usr/local/jdk
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH export CLASSPATH
    source /etc/profile

    ###测试:echo $PATH java -version

    unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba
    chmod -R a+x /usr/local/amoeba/bin/
    vi /usr/local/amoeba/conf/amoeba.xml
    #####amoeba主配置信息
    <?xml version="1.0" encoding="gbk"?>
    <!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
    <amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">

    <server>
    <!-- proxy server°ó¶¨µÄ¶Ë¿Ú -->
    <property name="port">9000</property>

    <!-- proxy server°ó¶¨µÄIP -->
    <property name="ipAddress">192.168.116.129</property>
    <!-- proxy server net IO Read thread size -->
    <!-- proxy server client process thread size -->
    <property name="clientSideThreadPoolSize">30</property>

    <!-- mysql server data packet process thread size -->
    <property name="serverSideThreadPoolSize">30</property>


    <!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). -->
    <property name="tcpNoDelay">true</property>

    <!-- ¶ÔÍâÑéÖ¤µÄÓû§Ãû -->
    <property name="user">root</property>

    <!-- ¶ÔÍâÑéÖ¤µÄÃÜÂë -->
    <property name="password">456</property>

    <!-- query timeout( default: 60 second , TimeUnit:second) -->
    <property name="queryTimeout">60</property>
    </server>

    <!--
    ÿ¸öConnectionManager¶¼½«×÷Ϊһ¸öÏß³ÌÆô¶¯¡£
    manager¸ºÔðConnection IO¶Áд/ËÀÍö¼ì²â
    -->
    <connectionManagerList>

    <!--
    default value is avaliable Processors
    <property name="processors">5</property>
    -->
    </connectionManager>
    </connectionManagerList>

    <dbServerList>
    <!--
    һ̨mysqlServer ÐèÒªÅäÖÃÒ»¸öpool£¬
    Èç¹û¶ą̀ ƽµÈµÄmysqlÐèÒª½øÐÐloadBalance£¬
    ¼òµ¥µÄÅäÖÃÊÇÊôÐÔ¼ÓÉÏ virtual="true",¸ÃPool ²»ÔÊÐíÅäÖÃfactoryConfig
    »òÕß×Ô¼ºÐ´Ò»¸öObjectPool¡£
    -->
    <dbServer name="server1">

    <!-- PoolableObjectFactoryʵÏÖÀà -->
    <property name="manager">defaultManager</property>

    <!-- ÕæʵmysqlÊý¾Ý¿â¶Ë¿Ú -->
    <property name="port">3306</property>

    <!-- ÕæʵmysqlÊý¾Ý¿âIP -->
    <property name="ipAddress">192.168.116.131</property>
    <property name="schema">aa,bb</property>

    <!-- ÓÃÓڵǽmysqlµÄÓû§Ãû -->
    <property name="user">amoeba</property>

    <!-- ÓÃÓڵǽmysqlµÄÃÜÂë -->

    <property name="password">123</property>

    </factoryConfig>

    <!-- ObjectPoolʵÏÖÀà -->
    <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
    <property name="maxActive">200</property>
    <property name="maxIdle">200</property>
    <property name="minIdle">10</property>
    <property name="minEvictableIdleTimeMillis">600000</property>
    <property name="timeBetweenEvictionRunsMillis">600000</property>
    <property name="testOnBorrow">true</property>
    <property name="testWhileIdle">true</property>
    </poolConfig>
    </dbServer>


    <dbServer name="master" virtual="true">
    <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
    <!-- ¸ºÔؾùºâ²ÎÊý 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
    <property name="loadbalance">1</property>

    <!-- ²ÎÓë¸Ãpool¸ºÔؾùºâµÄpoolNameÁбíÒÔ¶ººÅ·Ö¸î -->
    <property name="poolNames">server1</property>
    </poolConfig>
    </dbServer>
    <dbServer name="server2">

    <!-- PoolableObjectFactoryʵÏÖÀà -->
    <property name="manager">defaultManager</property>

    <!-- ÕæʵmysqlÊý¾Ý¿â¶Ë¿Ú -->
    <property name="port">3306</property>

    <!-- ÕæʵmysqlÊý¾Ý¿âIP -->
    <property name="ipAddress">192.168.116.132</property>
    <property name="schema">aa,bb</property>

    <!-- ÓÃÓڵǽmysqlµÄÓû§Ãû -->
    <property name="user">amoeba</property>

    <!-- ÓÃÓڵǽmysqlµÄÃÜÂë -->

    <property name="password">123</property>

    </factoryConfig>

    <!-- ObjectPoolʵÏÖÀà -->
    <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
    <property name="maxActive">200</property>
    <property name="maxIdle">200</property>
    <property name="minIdle">10</property>
    <property name="minEvictableIdleTimeMillis">600000</property>
    <property name="timeBetweenEvictionRunsMillis">600000</property>
    <property name="testOnBorrow">true</property>
    <property name="testWhileIdle">true</property>
    </poolConfig>
    </dbServer>


    <dbServer name="slave" virtual="true">
    <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
    <!-- ¸ºÔؾùºâ²ÎÊý 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
    <property name="loadbalance">1</property>

    <!-- ²ÎÓë¸Ãpool¸ºÔؾùºâµÄpoolNameÁбíÒÔ¶ººÅ·Ö¸î -->
    <property name="poolNames">server2</property>
    </poolConfig>
    </dbServer>
    </dbServerList>

    <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
    <property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>
    <property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>
    <property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>
    <property name="LRUMapSize">1500</property>
    <property name="defaultPool">master</property>

    <property name="writePool">master</property>
    <property name="readPool">slave</property>
    <property name="needParse">true</property>
    </queryRouter>
    </amoeba:configuration>
    ######amoeba主配置信息

    vi /usr/local/amoeba/bin/amoeba
    DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k" ###128k改成256k

    ###启动amoeba
    nohup bash -x /usr/local/amoeba/bin/amoeba &
    ##测试服务是否启动
    netstat -an | grep 9000

    yum -y install mysql
    mysql -uroot -p -h 192.168.116.129 -P 9000 ##本机amoeba密码:456

    ###测试amoeba效果,关闭从,测试主是否可读可写

  • 相关阅读:
    POM (Project Object Model)简介
    Maven 依赖管理
    Maven仓库—Nexus环境搭建及简单介绍
    Maven的几个核心概念
    maven本地仓库的配置以及如何修改默认.m2仓库位置
    Maven修改镜像仓库地址
    Maven生命周期
    Maven 和 Ant 的区别?
    Maven简介
    Maven常用命令
  • 原文地址:https://www.cnblogs.com/Su-per-man/p/9083223.html
Copyright © 2011-2022 走看看