实现在同一台linux主机上mysql主从复制与读写分离

搭建MySQL读写分离(一主一从) 目录#注意:MySQL读写分离是基于主从复制实现的一、MySQL读写分离实现类型 (一)基于程序代码内部实现1、select与insert进行路由分类2、一般由开发人员操作3、生产环境经常使用(二)基于中间代理层实现 1、MySQL-Proxy2、Amoeba (三)知识点补充 1、事务 2、事务通常需要满足四个属性:二、搭建MySQL读写分离(一)准备工作1、由于MySQL读写分离是基于主从复制实现的,所以首先搭建MySQL主从复制;详见http://t.cs 阅读详情

环境情况:由于资源有限,仅在一台CentOS release 6.6上实现M-S主从复制与读写分离

一、mysql安装与配置

具体安装过程建议参考我的上篇一博客文章


二、mysql主从复制

主从服务器场景如下

主(m)   :172.30.204.111:3307

从1(s1):172.30.204.111:3308

从2(s2):172.30.204.111:3309

[root@master dingmingyi]# netstat-anlpt|grep mysql

tcp       0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      19411/mysqld       

tcp       0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN     19734/mysqld       

tcp       0      0 0.0.0.0:3309                0.0.0.0:*                   LISTEN      20202/mysqld

 

2.1主服务器操作:

[root@master dingmingyi]# cat /usr/local/mysql-m/etc/my.cnf

[mysqld]

basedir=/usr/local/mysql-m

datadir=/opt/database-m

socket=/var/run/mysql-m/mysql-m.sock

pid-file=/var/run/mysql-m/mysql-m.pid

port=3307

user=mysql

server-id=1                          

log-bin=mysql-bin

binlog_ignore_db=mysql

character_set_server=utf8

[mysqld_safe]

log-error=/var/log/mysql-m/mysql--error.log

[mysql]

socket = /var/run/mysql-m/mysql-m.sock

default-character-set=utf8

 

只要在my.cnf里面添加内容都要重新启动服务#service mysql-m restart

[root@master dingmingyi]#/usr/local/mysql-m/bin/mysqladmin -uroot password '321321'  -S /var/run/mysql-m/mysql-m.sock               #为M-mysql设置密码;

[root@master dingmingyi]# /usr/local/mysql-m/bin/mysql-uroot -p321321 -S /var/run/mysql-m/mysql-m.sock

 

授权给从服务器

mysql> grant replication slave on *.* tos1@localhost identified by '123123';

mysql> grant replication slave on *.* tos2@localhost identified by '123123';

mysql>flush privileges;

 

查询主数据库状态

mysql>  show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000001 |      670 |              | mysql            |                   |

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

1 row in set (0.00 sec)

记录file和position的值,在配置从服务器时需要用到

 

2.2从服务器操作

修改从服务器配置文件/usr/local/mysql-s1/etc/my.cnf

将server-id=10 ,确保此id与主服务器不同                                                     #设置多个从服务器必须与M-S和S-S都不同

同样在[mysql]下增加default-character-set=utf8 ,在[mysqld]下增加character_set_server=utf8

重启服务

 

登陆从服务器

/usr/local/mysql-s1/bin/mysql -uroot -p -S/var/run/mysql-s1/mysql-s1.sock              #由于没设密码,可以直接回车进入

 

执行同步语句

>change master to

 master_host='localhost',

 master_user='s1',

master_password='123123',

master_log_file='mysql-bin.000001',

master_log_pos=670,

master_port=3307;                                #一定要指定相应的端口号,不然在查看状态时会出错

>start slave;

 

 

mysql> show slave status\G

*************************** 1. row ***************************

                  Slave_IO_State: Waiting for master to send event

                       Master_Host: localhost

                       Master_User: s1

                        Master_Port: 3307

                   Connect_Retry: 60

                Master_Log_File: mysql-bin.000001

    Read_Master_Log_Pos: 670

                     Relay_Log_File: mysql-s1-relay-bin.000002

                     Relay_Log_Pos: 283

    Relay_Master_Log_File: mysql-bin.000001

               Slave_IO_Running: Yes            #以下两排都要为YES才表明状态正常

            Slave_SQL_Running: Yes

                 Replicate_Do_DB:          

   …………………………..省略若干…………………………………

 

 

另一从服务器也做类似以上操作。

 

2.3 验证主从复制效果

主服务器上操作

mysql> create database ding;

Query OK, 1 row affected (0.00 sec)

 

mysql> create table ding.d_tb(id int(3),name char(16),age char(4));

Query OK, 0 rows affected (0.14 sec)

 

mysql> insert into ding.d_tb values(001,'xixi','23');

Query OK, 1 row affected (0.03 sec)

 

两台从服务器上都可以查看相同的内容

mysql> show databases;

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

| Database           |

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

| information_schema |

| ding             |

| mysql              |

| performance_schema |

| test               |

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

5 rows in set (0.00 sec)

 

mysql> use ding;

Database changed

 

mysql> show tables;

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

| Tables_in_d_test |

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

| d_tb             |

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

1 row in set (0.00 sec)

 

mysql> select * from ding.d_tb;

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

| id   | name | age  |

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

|    1 | xixi | 23   |

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

1 row in set (0.00 sec)

同步成功!!!

 

三、Mysql-proxy读写分离

 Mysql-proxy代理:将写操作分到mysql-master,读操作分到mysql-slave

Mysql-proxy的读写分离是通过rw-splitting.lua脚本实现,因此需要安装lua

3.1安装lua

[root@master dingmingyi]# yum -y install gcc gcc-c++ libedit libedit-devel libtermcap-devel ncurses-devel libevent-devel readline-devel

[root@master dingmingyi]# wget http://www.lua.org/ftp/lua-5.2.3.tar.gz

[root@master dingmingyi]# tar zxvf lua-5.2.3.tar.gz

[root@master dingmingyi]#cd lua-5.2.3

[root@master lua-5.2.3]#make linux

[root@master lua-5.2.3]#make install

 

3.2 下载mysql-proxy

[root@master dingmingyi]#wget http://mirrors.sohu.com/mysql/MySQL-Proxy/mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz

[root@master dingmingyi]# tar zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz

[root@master dingmingyi]# mv mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit /usr/local/mysql_proxy

[root@master dingmingyi]# cd /usr/local/mysql_proxy/

[root@master mysql_proxy]# mkdir scripts

[root@master mysql_proxy]# cp share/doc/mysql-proxy/rw-splitting.lua scripts/

[root@master mysql_proxy]# vim scripts/rw-splitting.lua

 

if not proxy.global.config.rwsplit then

     proxy.global.config.rwsplit = {

              min_idle_connections = 1,           #默认4           改为1,表示最小链接数只有超过1时才会进行读写分离

             max_idle_connections = 1,           #默认8

 

         is_debug = false

      }

end

 

 

[root@master mysql_proxy]# vim proxy.conf      #此为手动创建

 

  1 [mysql-proxy]

  2 admin-username=proxy

  3 admin-password=123123

  4

  5 admin-lua-script=/usr/local/mysql_proxy/lib/mysql-proxy/lua/admin.lua                       #定义管理脚本路径

  6 proxy-read-only-backend-addresses=172.30.204.111:3308,172.30.204.111:3309        #读服务器地址

  7 proxy-backend-addresses=172.30.204.111:3307                         #写服务器地址

  8 proxy-lua-script=/usr/local/mysql_proxy/scripts/rw-splitting.lua                 #读写分离脚本路径

  9 log-file=/var/log/mysql-proxy.log

 10 log-level=debug

 11 daemon=true

 12 keepalive=true

~                  

[root@master mysql_proxy]# chmod 660 proxy.conf

 

[root@master mysql_proxy]# bin/mysql-proxy -P 172.30.204.111:3310 --defaults-file=/usr/local/mysql_proxy/proxy.conf

[root@master mysql_proxy]# lsof -i:3310

COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME

mysql-pro 1416 root   10u  IPv4 1011376      0t0  TCP master.jay.com:dyna-access (LISTEN)

 

 

登陆主服务器上

mysql> grant all on *.* to proxy@'%'identified by '123123';

mysql>flush privileges;

 

由于配置了主从复制,可以在从数据库服务器上查看到同步的数据

从服务器上

mysql> select host,user,password from mysql.user;     

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

| host           | user  | password                                  |

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

| localhost      | root  |                                           |

| master.jay.com | root  |                                           |

| 127.0.0.1      | root  |                                           |

| ::1            | root  |                                           |

| localhost      |       |                                           |

| master.jay.com |       |                                           |

| %              | proxy | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

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

7 rows in set (0.00 sec)

 

 

为了更显著看到读写分离效果,现将两台slave关闭

mysql> stop slave;

 

注:这里以ding.d_tb为测试数据库,由于前面进行主从复制,在从服务器中也存在ding.d_tb库。

为了看到单点效果,现做如下操作:

mysql> insert into ding.d_tbvalues(004,'master','4');                   ----〉主服务器

mysql> insert into ding.d_tbvalues(005,'slave-1','5');                 -----〉从服务器 s1

mysql> insert into ding.d_tbvalues(006,'slave-2','6');                 ----->从服务器s2

 

测试机已安装mysql,现远程连接mysql-proxy

[root@ldap mysql-p]# bin/mysql -uproxy -p123123 -h172.30.204.111 -P3310 –e” insert into d_tb values(002,'dingding','25');”     #插入数据

 

[root@ldap mysql-p]# bin/mysql -uproxy -p123123 -h172.30.204.111 -P3310    

mysql> select * from ding.d_tb;      #此时看到的是从服务器s1上的数据,上一步添加的数据没有

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

| id   | name     | age  |

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

|    1 | xixi     | 23   |

|    2 | haha     | 24   |

|    2 | dingding | 25   |

|    5 | slave-1  | 5    |

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

4 rows in set (0.00 sec)

 

去主库中查询:

mysql>  select * from ding.d_tb;

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

| id   | name     | age  |

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

|    1 | xixi     | 23   |

|    2 | haha     | 24   |

|    2 | dingding | 25   |

|    4 | master   | 4    |

|    2 | dingding | 25   |

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

 

数据已插入

 

最后检查从数据库

S1:

mysql>  select * from ding.d_tb;

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

| id   | name     | age  |

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

|    1 | xixi     | 23   |

|    2 | haha     | 24   |

|    2 | dingding | 25   |

|    5 | slave-1  | 5    |

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

4 rows in set (0.00 sec)

 

S2:

mysql>  select * from ding.d_tb;

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

| id   | name     | age  |

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

|    1 | xixi     | 23   |

|    2 | haha     | 24   |

|    2 | dingding | 25   |

|    6 | slave-2  | 6    |

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

4 rows in set (0.00 sec)

 

由于关闭了主从同步,也没有记录。

 

现停掉S1服务   #service mysql-s1 stop

再次登陆测试机

[root@ldap mysql-p]# bin/mysql -uproxy -p123123 -h172.30.204.111 -P3310

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.6.24-debug Source distribution

 

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> select * from ding.d_tb;     

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

| id   | name     | age  |

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

|    1 | xixi     | 23   |

|    2 | haha     | 24   |

|    2 | dingding | 25   |

|    6 | slave-2  | 6    |

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

4 rows in set (0.00 sec)

 

发现已自动切到S2上读取数据了

 

由此验证,已经实现mysql读写分离,目前写操作都在master主服务器上,用了避免数据不同步;读操作都分摊给其他各个slave从服务器,用来分担数据库压力。

 


===================================================================

配置过程出现的问题及相应的解决方法

1、mysql> showmaster status;

Empty set (0.00 sec)

 

解决:没开启log-bin导致。在主服务器my.cnf中[mysqld]添加log-bin=mysql-bin,重启

 

2、mysql> show slavestatus\G;

*************************** 1. row***************************

               Slave_IO_State: Connecting tomaster

                  Master_Host: localhost

                  Master_User: s1

                  Master_Port: 3308

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

         Read_Master_Log_Pos: 120

               Relay_Log_File:mysql-s1-relay-bin.000001

                Relay_Log_Pos: 4

       Relay_Master_Log_File: mysql-bin.000001

            Slave_IO_Running: Connecting

           Slave_SQL_Running: Yes

 

解决:

对照以下三条:网络不通、密码不对、pos不对

>stop slave;

>change master to

   master_host='localhost',

   master_user='s1',

   master_password='123123',

   master_log_file='mysql-bin.000001',

master_log_pos=120,

master_port=3307;         #一定要指定端口号

>start slave;

 

3、mysql> show slavestatus\G;

……………….省略若干………………….

ERROR:

No query specified

 

解决:mysql> show slave status\G不要后面的;(==》分号)

 

4、# make linux

cd src && make linux

make[1]: Entering directory`/home/dingmy/lua-5.2.4/src'

make allSYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl-lreadline"

make[2]: Entering directory `/home/dingmy/lua-5.2.4/src'

gcc -O2 -Wall -DLUA_COMPAT_ALL-DLUA_USE_LINUX    -c -o lua.o lua.c

lua.c:67:31: error: readline/readline.h: Nosuch file or directory

lua.c:68:30: error: readline/history.h: Nosuch file or directory

lua.c: In function ?.ushline?.

lua.c:265: warning: implicit declaration offunction ?.eadline?

lua.c:265: warning: assignment makespointer from integer without a cast

lua.c: In function ?.oadline?.

lua.c:297: warning: implicit declaration offunction ?.dd_history?

make[2]: *** [lua.o] Error 1

make[2]: Leaving directory`/home/dingmy/lua-5.2.4/src'

make[1]: *** [linux] Error 2

make[1]: Leaving directory`/home/dingmy/lua-5.2.4/src'

make: *** [linux] Error 2

 

解决:yum install readline-devel

 

5、

[root@master dingmingyi]#/usr/local/mysql-m/bin/mysql -uroot -p321321 -S /var/run/mysql-m/mysql-m.sock

Warning: Using a password on the commandline interface can be insecure.

/usr/local/mysql-m/bin/mysql: Unknown OScharacter set 'GB18030'.

/usr/local/mysql-m/bin/mysql: Switching tothe default character set 'latin1'.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.24-debug-log Sourcedistribution

 

Copyright (c) 2000, 2015, Oracle and/or itsaffiliates. All rights reserved.

 

Oracle is a registered trademark of OracleCorporation and/or its

affiliates. Other names may be trademarksof their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.

 

mysql>

 

解决:

# vim /usr/local/mysql-m/etc/my.cnf

在[mysql]下增加default-character-set=utf8 

在[mysqld]下增加character_set_server=utf8

# service mysql-m restart

 

 

6、[root@ldap mysql-p]#bin/mysql -uproxy -p123123 -P3310 -h172.30.204.111

Warning: Using a password on the commandline interface can be insecure.

ERROR 1045 (28000): Access denied for user'proxy'@'master.jay.com' (using password: YES)

 

解决:进入主服务器中

mysql> select host,user,password frommysql.user;

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

| host           | user   | password                                  |

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

| localhost      | root  | *4160291B4C8CC2573CC94951203FFBC858754907 |

| master.jay.com | root   |                                           |

| 127.0.0.1      |root   |                                           |

| ::1            | root   |                                           |

| localhost      |       |                                           |

| master.jay.com |        |                                           |

| localhost      | s1    | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

| localhost      | s2    | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

| %              | proxy  | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

| %              | proxy1 |*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

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

10 rows in set (0.00 sec)

 

mysql> delete from mysql.user wherehost='master.jay.com';      #删除host=master.jay.com

Query OK, 2 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

重新连接mysql-proxy成功!!

 

 

 


MySQL实现读写分离 读写分离 读写分离其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。使用读写分离可以大大降低数据库服务器的负载。 环境搭建 rhel7.3 server1:172.25.61.1(读写) server2:172.25.61.2(只读) server3:172.25.61.3(调度) server1和server... 阅读详情

相关推荐

Linux学习:虚拟机Centos的MySQL与主机的MySQL实现主从复制

说明 在大学学习linux时,学习了linux中mysql与主机的主从配置,现在需要主从的mysql,发现已经忘的差不多了,就重新学习了一下如何配置,跟着教学视频将主要内容步骤在这里记录下。 正文 本次学习,Linux中使用的是Centos和MySQL的5.5.48版本,关于Linux下mysql的安装请看之前的博文《Linux下安装MySQL》,这里不再做过多的赘述。 在开始配置如何...

wds的博客 2022

Linux--MySQL主从复制与读写分离

在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案来进行部署与实施的。

2301_77023501的博客 1426

光伏系统选型指南:5种主流MPPT算法优缺点对比(附选型流程图)

本文深入剖析了光伏系统中五种主流MPPT算法的核心原理与性能差异。通过对比扰动观察法、电导增量法、恒定电压法、模糊逻辑控制及人工智能算法在追踪精度、响应速度、实现成本与稳定性等方面的表现,为不同应用场景(如户用、工商业及大型电站)提供了清晰的选型决策流程图和实战指南,帮助工程师优化系统效率与投资回报。

weixin_29294597的博客 106

Linux系统实现MySQL的主从复制及读写分离

在Linux部署Mysql,实现主从复制及读写分离

weixin_65607252的博客 582

零基础玩转IndexTTS2:5分钟搭建个人语音克隆工具(支持B站同款情感语音)

本文详细介绍了如何零基础使用IndexTTS2快速搭建个人语音克隆工具,支持B站同款情感语音。IndexTTS2作为自回归零样本TTS系统,突破传统技术限制,实现精准时长控制和丰富情感表达。通过HuggingFace在线演示,用户可轻松克隆音色并调节情感参数,适用于自媒体配音、有声书朗读等场景。

purple的博客 919

机器人动力学与控制学习笔记(一)————机器人控制概述

一、概述 1、机器人控制的目的 对自由运动机器人来说,控制的目的是要控制机器人手端的位置和姿态(以后统一简称为位姿),即所谓位置控制问题。这时希望机器人手端所达到的位置称为期望位置或期望轨迹。期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学关系转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(即固定点),另一种是一条随时间连续变化的轨迹。自由运动机器人位置控制的目的,是要使机器人手端从任意起始位置出发都能到达期望轨迹。当期望轨迹是固定点时的位置控制称为定...

冰与火的青春的博客 6882

mysql主从复制主机读_【转】同一台linux主机上实现mysql主从复制与读写分离

一、mysql主从复制主从服务器场景如下主(m) :172.30.204.111:3307从1(s1):172.30.204.111:3308从2(s2):172.30.204.111:3309[root@master dingmingyi]# netstat-anlpt|grep mysqltcp0 0 0.0.0.0:3307 0.0....

weixin_36469682的博客 167

Robosuite实战:通过Xbox手柄实现机械臂6-DoF精准控制的完整指南

本文详细介绍了如何通过Xbox手柄实现机械臂的6-DoF精准控制,结合Robosuite仿真环境与MuJoCo物理引擎,提供从环境配置到代码实现的完整指南。文章重点解析了手柄映射原理、核心控制代码以及数据采集优化技巧,帮助开发者高效完成机械臂控制任务。

weixin_29169505的博客 419

mysql在同一台机器上实现主从_同一台主机上的MySQL主从复制

MySQL复制是使来自一个MySQL数据库服务器(主数据库)的数据自动复制到一个或多个MySQL数据库服务器(从数据库)的过程。它通常用于在多台服务器上扩展读取访问权限以实现可伸缩性,尽管它也可以用于其他目的,例如故障转移或分析从属服务器上的数据,以免使主服务器过载。由于主从复制是单向复制(从主到从),因此只有主数据库用于写操作,而读操作可能会散布在多个从数据库上。这意味着如果将主从复制用作横向扩...

weixin_34360879的博客 1411

一文吃透 SAP IDoc 状态码:从 TEDS1 到 WE02 排障,再到 ABAP 自动化监控

在 SAP 集成场景里,IDoc 往往是最常见、也最容易被低估的一条生命线:采购订单、发票、主数据、库存移动……只要系统之间要稳定地交换结构化业务数据,IDoc 就经常登场。真正让人头疼的,并不是 IDoc 本身,而是它在链路里到底走到了哪一步、卡在了哪里、该找谁背锅。这篇文章把常用的 IDoc 状态码按出站、入站拆开讲清楚,并且把每个状态对应的真实世界故障现象、排查入口、以及可以落地的 ABAP 监控代码串起来,让你看到状态码就能想到动作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 405

HyperLynx(十五)多板仿真

在对话框的“Design file#1”下拉列表中选择“B00,Mainboard”,在其下方的“Reference designators”列表中选择元器件“J1”,然后在“Designfile#2”下拉列表中选择“BO1、RAM1”,在其下方的“Refer ence designators”列表中选择元器件“J1”,单击“Insert”按钮,为这两个元器件建立互连映射。在“Assign Models”对话框中,选择“B00 Motherboard”,将“U16.B12”设置为输出。

小幽余生不加糖 5060

MySQL 主从复制与读写分离

读写分离,基本的原理是让主数据库处理事务性增、改、删操作( INSERT、UPDATE、DELETE) ,而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。主服务器提供写,从服务器提供读。

w2304948626的博客 1676

通过傅里叶变换进行音频变声变调

在游戏或者一些特殊场景下为了提高娱乐性或者保护声音的特征,我们会对音频进行变声变调处理。

yang1fei2的博客 1817

SpringBoot环境-MySQL主从复制,读写分离的实现

记录sharding-jdbc框架的使用-主从复制,读写分离实现的步骤及测试。

maohe的博客 3459

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

mysql主从复制、读写分离

当 slave 从库宕机后,假如 relay-log 损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的 relay-log,并且重新从 master 上获取日志,这样就保证了relay-log 的完整性。读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。#配置同步,注意 master_log_file 和 master_log_pos 的值要与Master查询的一致,这里的是例子,每个人的都不一样。

mikechen1的博客 1030

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux之MySQL主从复制

MySQL的主从复制()是一种数据复制解决方案,将主数据库的DDL(数据定义语言)和DML(数据操纵语言)操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而是的从库和主库的数据保存同步。MySQL支持将数据从一个MySQL服务器(主服务器)复制到一个或多个其他MySQL服务器(从服务器),从库同时也可以作为其他从服务器的主库,实现链状复制。MySQL主从复制的优点主要包含以下三个方面:主库出现问题,可以快速切换到从库提供服务;实现读写分离,降低主库的访问压力;

2302_79087378的博客 2388

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

实现mysql的主从复制、实现MySQL的读写分离与负载均衡

/增加 定义中继日志索引文件名(记录很多的中继日志文件)默认情况,中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序 列号。[root@centos1 ~]# cp /mnt/jdk-6u14-linux-x64.bin /usr/local/(需要提前准备好软件,这里的路径需要按照你实际的)log_bin=master-bin //修改 定义bin-log的文件名 (默认保存在数据目录下)

2302_76160310的博客 1312

【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)

本文详细介绍了如何实现MySQL主从复制,以及Spring Boot项目如何实现读写分离。

Sihang_Xie的博客 2286

Linux-MySQL数据库之主从复制与读写分离

在企业应用中,成熟的业务通常数据量都比较大单台MysQL在安全性、―高可用性和高并发方面都无法满足实际的需求配置多台主从数据库服务器以实现读写分离。MysQL的复制类型1、主服务器 master 记录数据库通过 dump 线程将操作记录到 Binary log2、从服务器开启 I/O 线程向主服务器发送同步日志请求3、主服务器把二进制日志内容发送给从服务器4、从服务器将二进制日志记录的操作同步到relay log (中继日志) (存在从服务器的缓存中)5、从服务器中的sql线程将relay log日志记录的

m0_56107775的博客 667

在同一台机运行多个mysql 服务 & 多个主/从在同一主机_在linux同一台主机下面搭建两个mysql 实例并实现主从复制 (二)...

根据需求现在需要测试mysql主从配置,但是由于本地主机资源有限,现在需要在一台Red Hat主机上面搭建两到三个Mysql实例,以方便测试mysql主从。实验分三大步骤:1,在Red Hat上面安装MySQL server2,利用MySQL的mysqld_multi配置多个实例3,搭建MySQL主从开始实验:2,利用MySQL的mysqld_multi配置多个实例首先确保上一步安装的mysql ...

weixin_39642981的博客 169

mysql主从复制和读写分离

目录 一,主从复制架构和原理 1,mysql主从复制原理 2,读写分离的原理 二,配置主从复制与读写分离 1,环境配置 2,初始环境准备 3,搭建mysql主从复制 3,搭建Amoeba 实现读写分离 三,实际问题 1,造成主从不一致的原因 2,主从不一致修复方法 3,如何避免主从不一致 一,主从复制架构和原理 1,mysql主从复制原理 mysql的复制类型: mysq支持的复制类型 (1)STATEMENT:基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样

LiuHuan303的博客 805

Linux——MySQL主从复制与读写分离实现高可用性,负载均衡的功能

目录标题主从复制二级目录三级目录 为什么会有主从复制和读写分离? 单台MySQL在安全新、高可用性和高并发方面都无法满足实际的需求 配置多台主从数据库服务器以实现读写分离可控的形式来让主从从服务器分别读写减轻服务器的压力 主从复制 MySQL主从复制原理 MySQL的复制类型 基于语句的复制 基于行的复制 混合类型的复制 ★MySQL主从复制的工作过程 基于日志进行复制 master 二进制日志 slave 中继日志 ★原理: 二级目录 三级目录 ...

不够优秀才会那么依赖其他人,不够成熟才会信任所有耀眼的外衣,不够强大才会浪费时光去迎合他们的玩闹! 681

Linux MySQL数据库主从复制,读写分离

数据库主从复制,读写分离

qq_62166387的博客 932

linux 虚拟机和windows mysql 实现主从复制和读写分离

或者“此电脑”图标上点击鼠标右键,在弹出的右键菜单中再点击“管理”,打开计算机管理后,点击左侧下方的“服务和应用程序”,就可以看到服务了)查找操作因为更频繁,所以单独分开放到从库。背景: zabbix 数据库迁移,搭建主从,主是5.6.25,从是5.7.15,流式备份应用 redo.log 之后,change master 和reset slave 时报出如下错误。privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL。

qq_37018378的博客 710
下一篇: mysql编译安装与配置
dmy_521
博客等级 码龄13年 4粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值