标签归档:Mysql

MySQL数据库复制配置

    关于MySQL Replication的网络上很多,这里留个记录,免得自己找。下面这个例子是主备(单向复制)的配置,如果要做互为主备(双向复制)的配置,在主机(Master)中添加备机(Slave)的配置,备机中添加主机的配置即可。

1. 在数据库备份机器上安装系统自带的mysql数据库。
 
2. 在主数据库中导出数据
[root@as-1 conf]# mysqldump -uroot -ppassword  –databases m0 m1 > all.sql
 
3. 将allpoc.sql传到备机中,并导入到备份机中
[root@AS-10 ~]# mysql -uroot -ppassword  < all.sql
 
4. 在主备机中创建数据库同步的用户(这里的用户名是repl,密码是repluserpassword)
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY 'repluserpassword';
 
5. 设置主机的mysql配置文件
   编辑 /etc/my.cnf , 在[mysqld] 后添加如下设置:
log-bin = mysql-bin
server-id = 10
 
   注意server_id是必须的,而且唯一。然后重启数据库,并执行 SHOW MASTER STATUS 命令,将看到如下输出:
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 |       98 |              |                  | 
+——————+———-+————–+——————+
1 row in set (0.00 sec)
 
6. 设置备机的mysql配置文件
   编辑 /etc/my.cnf , 在[mysqld] 后添加如下设置:
log_bin = mysql-bin
server_id = 12
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
slave-skip-errors = all
master-host = 10.56.249.233  #主服务器IP地址
master-user = repl  #同步账户名
master-password = repluserpassword #同步帐户密码
master-port = 3306 #主服务器的 TCP/IP 端口号,默认是3306
replicate-wild-do-table = db_pocm0.%
replicate-wild-do-table = db_pocm1.%
 
   注意server_id是必须的,而且唯一的。然后重启数据库,并执行 SHOW SLAVE STATUS 命令,如果看到的输出信息中Slave_IO_Running和Slave_SQL_Running的值为Yes,则表示配置成功。
 

MySQL报错“MySQL server has gone away”的解决方法之一

    在RedHat Linux环境下,如果Mysql是默认安装以后,就没有修改过配置的话,那么在Mysql运行一段时间以后,使用它的应用程序可能出现“MySQL server has gone away”的错误。如Drupal网站,访问就可能出现这样的错误在界面上,但是可能部分页面访问又是正常的,这个问题在Mysql的官方网站上有说明,地址:http://dev.mysql.com/doc/refman/5.0/en/gone-away.html。

    这个时候就需要加大 my.cnf(Windows环境下是my.ini)文件中的max_allowed_packet的值(通常在默认值的基础上翻倍即可),如果文件中没有这个参数,那么直接添加这个参数的值就可以了。

    下面给出一个实际使用的例子(配置是否合理,性能如何,不同的应用场景和机器配置,这样的配置可能导致Mysql的性能有差异,这里提供的配置仅供参考):

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
innodb_flush_log_at_trx_commit=1
 
tmpdir = /tmp
thread_cache_size = 128
table_cache = 256
key_buffer = 64M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
max_allowed_packet = 1M
tmp_table_size=32M
max_heap_table_size=8045M
query_cache_size=128M
query_cache_type=1
long_query_time=2
innodb_buffer_pool_size = 8045M
innodb_additional_mem_pool_size = 8M
innodb_support_xa = 0
innodb_lock_wait_timeout = 50
innodb_flush_method=O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_thread_concurrency = 8
lower_case_table_names = 1
key_buffer_size=384M
table_open_cache=512
interactive_timeout=315360000
wait_timeout=315360000
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 

【转】MySQL命令行常用命令(非常基础的几个命令)

第一招、mysql服务的启动和停止

net stop mysql

net start mysql

第二招、登陆mysql

语法如下: mysql -u用户名 -p用户密码

键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:

mysql>

注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP

第三招、增加新用户

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”

如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:

grant select,insert,update,delete on *.* to user1@localhost Identified by “password1”;
或者
insert into mysql.user(Host,User,Password) values(“localhost”,”test”,password(“test22”));

如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。

继续阅读