mysql主从数据库设计

简要:(一主一从)一主多从同理

1、主数据库的my.cnf (/etc/my.cnf)中:

[mysqld]

# 开启二进制日志功能,可以随便取(关键)

log-bin = mysql-bin

# 同一局域网内注意要唯一
server-id = 1

从数据库的my.cnf (/etc/my.cnf)中(多台数据库重复此操作):

log-bin=mysql-bin
server-id = 22

2、主数据库创建用户:

mysql>  grant replication slave on *.* to 'hja'@'%' identified by 'hja100521';
Query OK, 0 rows affected, 1 warning (0.07 sec)

主数据库的信息:

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      848 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

从数据库相关配置(多台数据库重复此操作):

mysql> change master to master_host='10.0.0.3',master_user='hja' ,master_password='hja100521',master_log_file='mysql-bin.000003',
    -> master_log_pos=848;
Query OK, 0 rows affected, 2 warnings (0.11 sec)

mysql> start slave;
Query OK, 0 rows affected (0.26 sec)

查看信息

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.3
                  Master_User: hja
          ........................................................
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes(均为yes表示设置成功)

          ......................................................

---------------------------------------------------------------------如果不报错,跳过此步-------------------------------------------------------

注意

错误一:如果Slave_IO_Running: No ;   Slave_SQL_Running: Yes

解决步骤:

重启master库:service mysqld restart

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 |       298 |              |                  | 

+------------------+----------+--------------+------------------+

mysql> stop slave ;

mysql> change master to Master_Log_File='mysql-bin.000002',Master_Log_Pos=298;

mysql> start slave;

mysql> show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.3
                  Master_User: hja
          ........................................................
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes(均为yes表示设置成功)

          ......................................................

错误二:如果Slave_IO_Running: Yes ;   Slave_SQL_Running:No

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

mysql> show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.3
                  Master_User: hja
          ........................................................
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes(均为yes表示设置成功)

          ......................................................

-----------------------------------------------------------报错部分结束------------------------------------------------------------------

测试:

主数据库创建数据库、数据表,(从数据库不需操作,主会自动将其复制到从数据库)

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> use test;
Database changed
mysql> create table user(id int(10) auto_increment primary key,name varchar(30)) engine=innodb,default charset = utf8;
Query OK, 0 rows affected (0.10 sec)

主数据库添加一条数据:

mysql> insert into user(name) values('zhangsan');
Query OK, 1 row affected (1.72 sec)

从数据库查询:

mysql> select * from user;
+----+------------+
| id | name       |
+----+------------+
|  1 | zhangsan |
+----+------------+
1 row in set (1.02 sec)


至此,实验成功,结束

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值