精华内容
下载资源
问答
  • MySQL配置多实例

    2016-05-25 09:34:11
    首先没有时间看mysql文档的朋友明确几个概念: 一、mysqld读取my.cnf的顺序: 第一搜,首先读取/etc/my.cnf,实例这个配置文件不会存在。:-( 第二搜,$datadir/my.cnf,在data目录下寻找此配置文件。 第...

    首先对没有时间看mysql文档的朋友明确几个概念:

    一、mysqld读取my.cnf的顺序:

    第一搜,首先读取/etc/my.cnf,多实例这个配置文件不会存在。:-(
    第二搜,$datadir/my.cnf,在data目录下寻找此配置文件。
    第三搜,defaultfile=/path/my.cnf 通常写在命令行上,mysqld_safe defaultfile=/tmp/my.cnf &等执行。
    第四搜,~/my.cnf 当前用户下的配置文件。

    二、Mysql的启动方式:

    mysqld多进程运行的必要条件,就是pid文件,datadir,socket,port是独立分开的。

    单一版本实现多实例
    #pwd
    /usr/local/
    #touch my_multi.cnf
    #cat my_multi.cnf

    [mysqld_multi]
    mysqld = /usr/bin/mysqld_safe
    mysqladmin = /usr/bin/mysqladmin
    user = root
    
    [mysqld1]
    socket = /tmp/mysql_3301.sock
    port = 3301
    pid-file = /usr/local/mysql_3301/data/mysql_3301.pid
    datadir = /usr/local/mysql_3301/data/
    log = /usr/local/mysql_3301/data/mysql_3301.log
    user = mysql
    
    [mysqld2]
    socket = /tmp/mysql_3302.sock
    port = 3302
    pid-file = /usr/local/mysql_3302/data/mysql_3302.pid
    datadir = /usr/local/mysql_3302/data/
    log = /usr/local/mysql_3302/data/mysql_3302.log
    user = mysql


    启动mysqld 的两个实例

    /usr/bin/mysqld_multi –config-file=./my_multi.cnf start 1,2

    Starting mysqld daemon with databases from /usr/local/mysql_3301/data/
    Starting mysqld daemon with databases from /usr/local/mysql_3302/data/

    查看3301,3302端口是否被监听
    # netstat -lt |grep 33
    tcp 0 0 *:3301 *:* LISTEN
    tcp 0 0 *:3302 *:* LISTEN

    测试mysql是否可以连通

    #pwd
    /usr/local/


    通过/tmp/mysql_3301.sock连接3001端口的mysqld
    # bin/mysql -u root -S /tmp/mysql_3301.sock -e “SELECT @@VERSION;”

    停止3001端口的mysqld
    # /usr/bin/mysqld_multi –config-file=./my_multi.cnf stop 1
    STOPPING server from pid file /usr/local/mysql_3301/data/mysql_3301.pid
    091010 11:56:04 mysqld ended

    再次连接,系统会提示错误
    # bin/mysql -u root -S /tmp/mysql_3301.sock -e “SELECT @@VERSION;”
    ERROR 2002 (HY000):
    Can’t connect to local MySQL server through socket ‘/tmp/mysql_3301.sock’ (2)


    相同的步骤测试3002端口的mysqld,输出与上面相同。
    # /usr/bin/mysql -u root -S /tmp/mysql_3302.sock -e “SELECT @@VERSION;”
    # /usr/bin/mysqld_multi –config-file=./my_multi.cnf stop 2
    # /usr/bin/mysql -u root -S /tmp/mysql_3302.sock -e “SELECT @@VERSION;”

    补充上两句:
    [Nova@imdba.cn mysql]# cp ../mysql-5.0.67/support-files/my-large.cnf /etc/my.cnf
    [Nova@imdba.cn mysql]# cp ../mysql-5.0.67/support-files/mysql.server /etc/rc.d/init.d/mysqld
    [Nova@imdba.cn mysql]# chkconfig –add mysql
    [Nova@imdba.cn mysql]# chkconfig –level mysql 345 on
    [Nova@imdba.cn mysql]# chkconfig –list mysql


    展开全文
  • 各表之间关系总览 从表里看出 company 和 user 是一对多关系  user 和role 是多对多关系 urser_role 是中间表二. 配置一对多 orm元数据1.一的一方(主表)对应的类 company 以及 orm元数据public class Company { ...

    一.各表之间关系总览

    从表里看出 company 和 user 是一对多关系
               user 和role 是多对多关系  urser_role 是中间表

    二. 配置一对多 orm元数据

    1.一的一方(主表)
    对应的类 company  以及  orm元数据
    public class Company {
    	private Long company_id;
    	private String company_name;
    	
    	//表达多对一关系
    	private Set<User> users = new HashSet<User>();
    
    
    	//getter,setter方法啊
    	//无参构造函数
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    	<!-- 配置表与实体的关系 -->
    <hibernate-mapping package="domain">
    	<class name="Company" table="company"><!-- name:类名 注意大小写  table:表名 -->
    		<id name="company_id" column="company_id"><!-- OID name:表中属性名 column:列名 如果两者一致 可省略column-->
    			<generator class="native"></generator><!-- 主键生成策略 -->
    		</id>
    		<property name="company_name" column="company_name" ></property>
    	<!-- 一的一方(主表) 在配置文件中体现 -->
    	<!-- cascade:主表中主键删除,自动删除从表中相关的行 inverse:主表放弃维护关系,让从表维护,默认false-->
    	<set name="users" cascade="delete" inverse="true"><!-- set:用set的集合装User对象 name:set集合的变量名 -->
    		<key column="company_id"></key><!-- 从表外键属性名(列名) -->
    		<one-to-many class="User"/><!-- 一对多 class:多的一方的类名 -->
    	</set>
    	</class>
    </hibernate-mapping>
    2.多的一方(从表)对应的类 user 以及 orm元数据
    public class User {
    	private Long user_id;
    	private  String username;
    	private String password;
    	
    	private Long company_id ;
    	private Long role_id;
    	//表达一对多关系
    	private Company company;
    	
    	
    	//表达多对一关系
    	private Set<Role> roles = new HashSet<Role>();
    	
    	//getter,setter方法啊
    	//无参构造函数
    }

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    	<!-- 配置表与实体的关系 -->
    <hibernate-mapping package="domain">
    	<class name="User" table="user" >
    		<id name="user_id" column="user_id">
    			<generator class="native"></generator>
    		</id>
    		<property name="username" column="username" ></property>
    		<property name="password" column="password"></property>
    		<!-- 多对一  name:一的一方的引用对象名 column:主表的主键  class:主表的类名-->
    		<many-to-one name="company" column="company_id" class="Company" cascade="save-update"></many-to-one>
    		
    		<set name="roles" table="user_role" cascade="save-update">
    			<key column="user_id"></key>
    			<many-to-many class="Role" column="role_id"></many-to-many>
    		</set>
    	</class>
    </hibernate-mapping>
    
    	
    
    三.多对多
    user表的对象 以及 orm元数据
    public class User {
    	private Long user_id;
    	private  String username;
    	private String password;
    	
    	private Long company_id ;
    	private Long role_id;
    	//表达一对多关系
    	private Company company;
    	
    	
    	//表达多对一关系
    	private Set<Role> roles = new HashSet<Role>();
    	
    	//getter,setter方法啊
    	//无参构造函数
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    	<!-- 配置表与实体的关系 -->
    <hibernate-mapping package="domain">
    	<class name="User" table="user" >
    		<id name="user_id" column="user_id">
    			<generator class="native"></generator>
    		</id>
    		<property name="username" column="username" ></property>
    		<property name="password" column="password"></property>
    		<!-- 多对一  name:一的一方的引用对象名 column:主表的主键  class:主表的类名-->
    		<many-to-one name="company" column="company_id" class="Company" cascade="save-update"></many-to-one>
    		
    		<!--name:引用别人的对象名  table:中间表名-->
    		<set name="roles" table="user_role" cascade="save-update">
    			<key column="user_id"></key><!-- column: 自己表的主键-->
    			<many-to-many class="Role" column="role_id"></many-to-many><!-- 多对多 class:别人的类名 column:我引用别人的外键列名 -->
    		</set>
    	</class>
    </hibernate-mapping>
    2.role对象 以及 orm元数据
    public class Role {
    	private Long role_id;
    	private String role_name;
    	private String role_memo;
    	
    	//多对多关系
    	private Set<User> users = new HashSet<User>();
    	//getter,setter方法啊
    	//无参构造函数
    
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="domain">
    	<class name="Role" table="role">
    		<id name="role_id">
    			<generator class="native"></generator>
    		</id>
    		<property name="role_name"></property>
    		<property name="role_memo"></property>
    		
    		<set name="users" table="user_role" inverse="true">
    			<key column="role_id" ></key>
    			<many-to-many class="User" column="user_id"></many-to-many>
    		</set>
    	</class>
    </hibernate-mapping>


    如有错误,请多多指教!






    展开全文
  • mysql多数据源配置

    2020-01-17 16:17:48
    mysql多数据源配置,把一个数据源的数据传输到另一个数据源,或者同时操作两个或者个数据库。学习个数据源配置的同学有帮助
  • 单机实例mysql配置

    2018-10-29 09:08:40
    注:主要目的是为了配置单机器实例的mysql,并将这些mysql写成单独的系统service,所以需要默认的/etc/init.d/mysqld进行修改 cp /etc/init.d/mysqld /etc/init.d/mysqld3307 cp /etc/my.cnf /etc/my3307.cnf ...

    注:主要目的是为了配置单机器多实例的mysql,并将这些mysql写成单独的系统service,所以需要对默认的/etc/init.d/mysqld进行修改

    cp /etc/init.d/mysqld /etc/init.d/mysqld3307
    cp /etc/my.cnf /etc/my3307.cnf #复制后修改配置
    vim /etc/init.d/mysqld3307
    
    // 26行 修改为
    MYSQLD_OPTS="--defaults-file=/etc/my3307.cnf" //慈湖 /etc/my3307.cnf 为对应的mysql配置文件
      
    //53-60行修改为
     53 get_mysql_option datadir "/var/lib/mysql" mysqld "$MYSQLD_OPTS"
     54 datadir="$result"
     55 get_mysql_option socket "$datadir/mysql.sock" mysqld "$MYSQLD_OPTS"
     56 socketfile="$result"
     57 get_mysql_option log-error "/var/log/mysqld.log" mysqld mysqld_safe "$MYSQLD_OPTS"
     58 errlogfile="$result"
     59 get_mysql_option pid-file "/var/run/mysqld/mysqld.pid" mysqld mysqld_safe "$MYSQLD_OPTS"
     60 mypidfile="$result"
     
    连接数据库 mysql -S /home/var/lib/mysql3307/mysql.sock

     

    展开全文
  • 如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越,介于MySQL会为每个连接提供连接缓冲区,就会开销越的内存,所以要适当调整该值,不...
  • Mysql-主从配置&配置

    千次阅读 2021-05-05 21:22:42
    ​ 我们首先需要mysql主机(192.168.254.130)的/etc/my.cnf配置文件,添加如下配置: #主机唯一ID server-id=1 #二进制日志 log-bin=mysql-bin #不需要同步的数据库 binlog-ignore-db=mysql binlog-ignore-db=...

    ​ 我们现在模拟的是主从(1台主机、一台从机),其主从同步的原理,就是对bin-log二进制文件的同步,将这个文件的内容从主机同步到从机。

    一、配置文件的修改

    1、主机配置文件修改配置

    ​ 我们首先需要mysql主机(192.168.254.130)的/etc/my.cnf配置文件,添加如下配置:

    #主机唯一ID
    server-id=1
    #二进制日志
    log-bin=mysql-bin
    #不需要同步的数据库
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #同步的数据库名称
    binlog-do-db=mycat
    #二进制的格式
    binlog_format=STATEMENT
    

    ​ 我们看下目前整个my.cnf文件

    [root@localhost Desktop]# cat /etc/my.cnf
    [mysqld]
    datadir=/usr/local/mysql/data
    basedir=/usr/local/mysql
    socket=/usr/local/mysql/data/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    server-id=1
    log-bin=mysql-bin
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-do-db=mycat
    binlog_format=STATEMENT
    
    
    [mysqld_safe]
    log-error=/usr/local/mysql/data/mysqld.log
    pid-file=/usr/local/mysql/data/mysqld/mysqld.pid
    [root@localhost Desktop]# 
    

    ​ 修改主机的配置文件后,我们需要通过命令重启下服务:

    [root@localhost support-files]# ls
    magic  mysqld_multi.server  mysql-log-rotate  mysql.server
    [root@localhost support-files]# pwd
    /usr/local/mysql/support-files
    [root@localhost support-files]# ./mysql.server restart
    

    ​ 然后我们修改下从机(192.168.254.131)的配置文件。

    2、从机的配置

    ​ 从机的配置修改比较简单:

    #从机机器唯一ID
    server-id=2
    #中继日志
    relay-log=mysql-relay
    

    ​ 同样修改配置后,我们重启下从机

    二、mysql客户端命令操作

    ​ 下面我们可以通过命令连接到mysql的命令端:

    [root@localhost bin]# 
    [root@localhost bin]# pwd
    /usr/local/mysql/bin
    [root@localhost bin]# ./mysql -uroot -p
    

    1、主机操作

    1)、创建同步用户

    ​ 首先我们可以在主机创建一个专门用于主从同步用户,通过命令:

    GRANT REPLICATION SLAVE ON *.* TO 'SLAVE'@'%' IDENTIFIED BY '123456';

    2)、查看同步文件状态

    ​ 然后我们通过show master status;查看主机的同步内容状态:

    mysql> show master status;
    +------------------+----------+--------------+--------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
    +------------------+----------+--------------+--------------------------+-------------------+
    | mysql-bin.000001 |      154 | mycat        | mysql,information_schema |                   |
    +------------------+----------+--------------+--------------------------+-------------------+
    1 row in set (0.00 sec)
    
    

    2、从机操作

    1)、设置从机的主机

    执行如下命令,这里设置了我们与主机建立同步的相关信息

    CHANGE MASTER TO MASTER_HOST='192.168.254.130',
    MASTER_USER='SLAVE',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=430;
    

    在这里插入图片描述

    ​ 这里如果提示已经设置了主机配置,可以通过stop slave&reset master进行重置。

    2)、启动同步

    ​ 下面我们再通过start slave开启同步:

    ​ 就可以看到:

    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.254.130
                      Master_User: SLAVE
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 592
                   Relay_Log_File: mysql-relay.000002
                    Relay_Log_Pos: 482
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 592
                  Relay_Log_Space: 685
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
                      Master_UUID: 74397a99-accf-11eb-ae0d-000c2912d302
                 Master_Info_File: /usr/local/mysql/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)
    
    mysql> 
    

    ​ 这里我们可以看到Slave_IO_RunningSlave_SQL_Running都为YES,则成功了,如果是下面这种:

    *************************** 1. row ***************************
                   Slave_IO_State: Connecting to master
                      Master_Host: 192.168.254.130
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 430
                   Relay_Log_File: mysql-relay.000001
                    Relay_Log_Pos: 4
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Connecting
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 430
                  Relay_Log_Space: 154
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: NULL
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 1045
                    Last_IO_Error: error connecting to master 'slave@192.168.254.130:3306' - retry-time: 60  retries: 1
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 0
                      Master_UUID: 
                 Master_Info_File: /usr/local/mysql/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 210505 00:18:08
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)
    

    ​ 我们可以看到Last_IO_Error这里有错误,我们就可以去看下日志报的什么问题了,目前我这个是因为同步用户写错了才不能同步,按上面说的先停止同步重置,修改后同步命令,再操作一遍就可以了。

    三、主从同步测试

    1、主机创建库

    ​ 我们先在主机创建我们前面设置的要同步的数据库mycat

    mysql> create database mycat;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use mycat;
    Database changed
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mycat              |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    
    mysql> 
    

    2、从机查看库

    ​ 然后我们就能在从机看到这个库了

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mycat              |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    

    3、表数据的初始

    ​ 下面我们进行表数据的测试

    1)、主机

    ​ 首先我们再主机建立表并插入数据

    mysql> use mycat;
    Database changed
    mysql> 
    mysql> create table `test1`(
        -> id int auto_increment not null primary key,
        -> name varchar(10) default null
        -> );
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> insert into test1(`id`,`name`) value(1,"petty");
    Query OK, 1 row affected (0.16 sec)
    
    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    +----+-------+
    1 row in set (0.00 sec)
    
    mysql> 
    
    

    2)、从机

    下面我们在从机查看看有没有成功同步:
    mysql> use mycat;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +-----------------+
    | Tables_in_mycat |
    +-----------------+
    | test1           |
    +-----------------+
    1 row in set (0.00 sec)
    
    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    +----+-------+
    1 row in set (0.00 sec)
    
    mysql> 
    

    ​ 可以看到我们的主从配置已经成功了。

    四、多主多从

    ​ 我们还可以多主多从,例如我们一个主从序列是编号1位主机、编号2为从机,然后编号3为主机、编号4为从机,同时编号1主机与编号3主机相互为主从,这样就是其中主机一台有问题,整个mysql集群还是能正常工作。

    ​ 由于目前只有3台机,只使用三台来写demo(一台windows,两台linux)。

    1、编号1主机(192.168.254.30)

    1)、修改配置

    ​ 我们首先需要修改其原来的etc/my.cnf文件,添加:

    # 作为从机也修改其bin-log日志
    log-slave-updates
    #自增长的幅度
    auto-increment-increment=2
    #自增长的开始位置
    auto-increment-offset=1
    

    ​ 整个文件的信息

    [root@localhost Desktop]# cat /etc/my.cnf
    [mysqld]
    datadir=/usr/local/mysql/data
    basedir=/usr/local/mysql
    socket=/usr/local/mysql/data/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    server-id=1
    log-bin=mysql-bin
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-do-db=mycat
    binlog_format=STATEMENT
    
    log-slave-updates
    auto-increment-increment=2
    auto-increment-offset=1
    
    [mysqld_safe]
    log-error=/usr/local/mysql/data/mysqld.log
    pid-file=/usr/local/mysql/data/mysqld/mysqld.pid
    [root@localhost Desktop]# 
    

    ​ 修改这个文件后我们需要重启机器

    2、编号2从机(192.168.254.31)

    ​ 这台原来已经配置其连接30机器了,所以这次不用修改

    3、编号3主机(192.168.254.1)

    1)、修改配置文件

    ​ 由于这台机器是windows,所以我们需要修改其的my.ini文件,在其最后面添加

    server-id=3
    log-bin=mysql-bin
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-do-db=mycat
    binlog_format=STATEMENT
    
    log-slave-updates
    auto-increment-increment=2
    auto-increment-offset=2
    

    ​ 注意我们上面改了server-id,同时也改了其的增长开始点auto-increment-offset=2。同时再重启服务。

    2)、创建同步用户

    ​ 首先我们可以在主机创建一个专门用于主从同步用户,通过命令:

    GRANT REPLICATION SLAVE ON *.* TO 'SLAVE'@'%' IDENTIFIED BY '123456';

    3)、查看状态

    mysql> show master status;
    +------------------+----------+--------------+--------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
    +------------------+----------+--------------+--------------------------+-------------------+
    | mysql-bin.000001 |      154 | mycat        | mysql,information_schema |                   |
    +------------------+----------+--------------+--------------------------+-------------------+
    1 row in set (0.00 sec)
    
    mysql>
    

    4)、设置同步的状态

    ​ 下面我们运行其连接的主机(30)信息

    CHANGE MASTER TO MASTER_HOST='192.168.254.130',
    MASTER_USER='SLAVE',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=430;
    

    5)、编号1主机同步(192.168.254.30)

    ​ 我们需要设置其去同步编号3主机(192.168.254.1),即我们前面查看的编号3的(master status):

    CHANGE MASTER TO MASTER_HOST='192.168.254.1',
    MASTER_USER='SLAVE',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;
    

    ​ 然后我们在编号1主机执行同步start slave;,也在编号3主机执行同步start slave;

    4、测试查看

    1)、可能的问题(可略过)

    ​ 现在我们测试,然后分别查看这两台的master状态show master status;

    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.254.1
                      Master_User: SLAVE
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 154
                   Relay_Log_File: localhost-relay-bin.000002
                    Relay_Log_Pos: 320
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    ........
    
    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.254.130
                      Master_User: SLAVE
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000002
              Read_Master_Log_Pos: 462
                   Relay_Log_File: LAPTOP-QR83QEC0-relay-bin.000003
                    Relay_Log_Pos: 675
            Relay_Master_Log_File: mysql-bin.000002
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
    .........
    

    ​ 可以看到它们的同步都是yes。这里可能有问题,我们需要自己解决,例如我在编号1机器修改配置,然后在查看其的状态,

    mysql> show master status;
    +------------------+----------+--------------+--------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
    +------------------+----------+--------------+--------------------------+-------------------+
    | mysql-bin.000002 |      462 | mycat        | mysql,information_schema |                   |
    +------------------+----------+--------------+--------------------------+-------------------+
    1 row in set (0.00 sec)
    
    mysql> 
    

    ​ 我如果以这个消息去让编号3机器同步编号1,就会报(因为我又运行了一条新的插入语句),但建表语句是在日志mysql-bin.000001,而这里我因为重启了,其有有新的mysql-bin.000002,所以有修改回了原来编号2的同步信息。

    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.254.130
                      Master_User: SLAVE
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000002
              Read_Master_Log_Pos: 462
                   Relay_Log_File: LAPTOP-QR83QEC0-relay-bin.000002
                    Relay_Log_Pos: 320
            Relay_Master_Log_File: mysql-bin.000002
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 1146
                       Last_Error: Error 'Table 'mycat.test1' doesn't exist' on query. Default database: 'mycat'. Query: 'insert into test1(`id`,`name`) value(2,"TOm")'
    

    2)、在编号3插入数据

    ​ 下面我们再编号3插入数据,看编号1、2能不能看到

    ​ 在编号3操作:

    mysql> insert into test1(`id`,`name`) value(3,"kitt");
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    |  2 | TOm   |
    |  3 | kitt  |
    +----+-------+
    3 rows in set (0.00 sec)
    
    mysql>
    

    ​ 在编号1查看

    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    |  2 | TOm   |
    |  3 | kitt  |
    +----+-------+
    3 rows in set (0.00 sec)
    
    mysql> 
    

    ​ 在编号2查看

    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    |  2 | TOm   |
    |  3 | kitt  |
    +----+-------+
    3 rows in set (0.00 sec)
    
    mysql> 
    

    ​ 可以看到目前我们已经同步成功了,在编号1中能查看到主机编号3的插入信息。

    3)、编号1处理数据

    ​ 下面我们在编号1操作查看

    编号1:

    mysql> insert into test1(`id`,`name`) value(4,"lisa");
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    |  2 | TOm   |
    |  3 | kitt  |
    |  4 | lisa  |
    +----+-------+
    4 rows in set (0.00 sec)
    
    mysql> 
    

    编号3:

    mysql> select * from test1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | petty |
    |  2 | TOm   |
    |  3 | kitt  |
    |  4 | lisa  |
    +----+-------+
    4 rows in set (0.00 sec)
    
    mysql>
    

    ​ 可以看到其是相互同步的。

    展开全文
  • MySQL多实例安装配置一.基本概念MySQL多实例就是,在一台机器上开启个不同的服务端口(如:3306,3307,3308...),运行MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务。MySQL可以共用一套...
  • Mysql配置问题

    2018-05-30 20:00:57
    MySQL 环境变量设置是针对于那些用命令提示符数据库操作的,如果用第三方可视化工具则不必配置mysql只需要配置Path,比JDK简单很mysql环境变量配置 配好之后本想用DOS进入mysql,但参见此经验输入...
  • MySQL多实例安装配置一.基本概念MySQL多实例就是,在一台机器上开启个不同的服务端口(如:3306,3307,3308...),运行MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务。MySQL可以共用一套...
  • MySQL 配置优化

    2019-12-13 10:21:06
    安装MySQL后,配置文件my.cnf在 /MySQL安装目录/share/mysql目录中,该目录中还包含配置文件可供参考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分别对应大中小型数据库应用的配置。...
  • MySQL 5.7开始默认支持SSL,SSL开启后会性能有一定影响,如果数据库没有暴露在外网,通常不会打开SSL,但如果数据是相当核心与机密的,建议配置SSL,虽然性能有影响,但不是特别大。相关配置过程如下: 1、在...
  • mysql5.6.10 实例配置

    2014-04-25 16:29:49
    server就一个mysql实例,从节约成本和充分利用资源的角度出发,我们往往会在主从环境下,从机的db server 安装mysql实例,用来同步主db server的相应实例 1.mysql 实例的控制原理: 实例通过Mysqld_...
  • mysql配置优化

    2016-05-19 17:20:00
    安装MySQL后,配置文件my.cnf在 /MySQL安装目录/share/mysql目录中,该目录中还包含配置文件可供参考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分别对应大中小型数据库应用的配置。...
  • 当我们在进行数据库分库分表操作是可能会需要到多个数据库,那么我们就需要对多个数据库的数据源进行配置. 整理一下,今天在SpringBoot框架下多个数据源的配置过程(两个为例): 1.配置数据库信息:在yml配置文件中...
  • mysql 配置优化

    2017-09-27 11:21:00
    安装MySQL后,配置文件my.cnf在 /MySQL安装目录/share/mysql目录中,该目录中还包含配置文件可供参考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分别对应大中小型数据库应用的配置。...
  • mysql 配置内存

    2017-12-14 21:46:00
    配置mysql 正确使用的内存量对于高性能是至关重要的,需要进行定制需求来定制内存的使用。 mysql内存消耗可以分为两类:可控制内存和不可控制内存。 无法控制 ...用好mysql可控制的内存则需要对配置...
  • 一、实验环境部署主服务器 192.168.18.42 端口3306==》 从服务器 192.168.18.44 端口 3306主服务器 192.168.18.43 端口3306==》 从服务器 192.168...从服务器上的mysql实例,请看另一篇帖子《用mysql_multi 实现...
  • 配置了一下druid的数据源配置,尝试了很方法,Spring boot关于对Mysql和Sqlite数据源的配置,记录下来: 涉及技术点: Springboot + Druid + Mysql +Sqlite 一、引入Jar包: <!--Spring Boot依赖--> &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,704
精华内容 1,481
关键字:

mysql配置多对多

mysql 订阅