How do I merge two different MySQL server instances - mysql

I have three servers. I want to copy MySQL database data from 2 servers to third server.
All servers have some or the other data in MySQL server instance running on them.
I didnt have spacy left on the servers so rather than doing mysqldump i just copied database folders i.e. /var/lib/mysql/dbname
Now its showing me names of databases and tables in server where I aggregated all this data (for commands like show databases, show tables) but when I access tables its giving me "Table doesn't exist error"
I am guessing it has something to do with not handling ibdata files in /var/lib/mysql . Given my case what can be done to merge them properly

These two threads effectively solve your issue:
If you have the consistent schemas for the three: How to merge two MySQL databases of same structure
If you don't have the same schema: How to merge two mySQL database into one?

Related

MySQL - querying tables on different databases/hostnames

Good morning!
I have 2 tables that are stored on different databases - different mySQL hostnames.
How to I join them?
Is there a way to open a connection to a database, being connected to another, using commands at the MYSQL Workbench GUI interface (not command prompt) and then query it?
Many thanks,

Duplicating PostgreSQL database on one server to MySQL database on another server

I have a PostgreSQL database with 4-5 tables (some of those have more than 20 million rows). i have to replicate this entire database onto another machine. However, there I have MySQL (and for some reason cannot install PostgreSQL) on that machine.
The database is static and is not updated or refreshed. No need to sync between the databases once replication is done. So basically, I am trying to backup the data.
There is a utility called pg_dump which will dump the contents onto a file. I can zip and ftp this onto the other server. However, I do not have psql on the other machine to reload this into a database. Is there a possibility that mysql might parse and decode this file into a consistent database?
Postgres is version 9.1.9 and mysql is version 5.5.32-0ubuntu0.12.04.1.
Is there any other simple way to do this without installing any services?
Depends on what you consider "simple". Since it's only a small number of tables, the way I'd do it is like this:
dump individual tables with pg_dump -t table_name --column-inserts
edit the individual files, change the schema definitions to be compatible with mysql (e.g. using auto_increment instead of serial, etc. : like this: http://www.xach.com/aolserver/mysql-to-postgresql.html only in reverse)
load the files into the mysql utility like you would any other mysql script.
If the files are too large for step #2, use the -s and -a arguments to pg_dump to dump the data and the schema separately, then edit only the schema file and load both files in mysql.

MYSql 5.5 Upgrade Issue: All tables gone

I had MySql 5.1.13 Database on Windows 2008, then on one fine day I took backup of my server [300+ databases]. Uninstall Old version and install 5.5 Version of MYSql. Now I copy the Data Folder back in Mysql 5.5 data location and I got all my Databases, but later I realise that around 250 Databases though did present at location but they do not show Tables in PHPmyadmin. I try to run "Show Tables" on couple of those database and Tables name does shows [and so as tablename.frm files exits] .
not to mention all tables that are Innodb are only one missing. How can get them back with ease. I have backup of each database but running 250 SQL files is not easy :).
Your innodb engines can have their own seperate folder where they store their data files. According the MySQL manual InnoDB creates tablespace files in the MySQL data directory by default see: http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html.
Normally you would split you tables onto different drives to increase performance thus you might have a scenario where the InnoDB tables where configured to be placed on a another drive or folder. If you have it please check the previous MySQL configuration file and check for the following line: innodb_data_home_dir = /ibdata
This will indicate where the files are located. I have not tried this but you should be able to point the current config to the old innodb location if this is the case. If that does not work I think restoring will be you best bet.
Good luck!

transferring data from my database to my friends database

Just created a database in my own MySQL server. Now I want to transfer the data from my MySQL server to one of my friend's MySQL server.
Any idea how this can be done?
Also, how would I do this if I use oracle server?
If you have an access to his database - you can create dblink
Otherwise you have to export a dump and send it to your friend.
I have had to copy full databases (as well as just selected tables) between servers before and a SQL dump can be cumbersome if you have a lot of data. If you have access to both servers you might consider an application called "Navicat". It is a MySQL GUI interface to manage databases.
You can have multiple databases on separate servers open at the same time, and can even "drag and drop" tables between databases and databases between servers.

How can I recover MySQL tables from data files?

I've got a database (all MyISAM tables) and the machine where MySQL was running is no longer bootable. However, we have all the MySQL data files from the data directory. How can I restore the data from the MYD and FRM files, or whatever other files I should be looking at in the data directory?
I've been doing some searching on this and it sounds like for MyISAM I should just be able to copy the database subdirectory from the old MySQL data directory to the new MySQL data directory. However, that's not working for me. A database with the name of the database I'm trying to recover shows up in the list of databases in phpMyAdmin, but all the tables show "in use" and have no information (e.g., number of rows, number of bytes, column information, etc.). Any operation on those tables (e.g., SELECT * FROM {table}, REPAIR {table}, CHECK {table}) returns a "no such table" error.
One of the tools I ran across in my search is DBACentral by MicroOLAP. It's got component that's supposed to restore data from FRM/MYD files, but when I tried to run it, it didn't list any tables that it could recover from my FRM/MYD files.
This is on a developer workstation that's running Vista Business 32bit. MySQL version is 5.0.27. After fixing the machine, I went and got the exact same version of MySQL (v5.0.27), thinking that if I'm just going to drop in the binary data files I should do it with the same version of MySQL. It still didn't work.
Any insights would be greatly appreciated... thanks!
-Josh
Install the same version of mysql.
Remove mysql directory from data directory of the server and copy it from the crashed server. This is the key element
copy directory of database you want to recover into data directory of new server
start mysql.
switch to mysql database: USE mysql; and run REPAIR TABLE <table name> on every table.
Do the same with database you want to recover
tip: make sure the 2 directories have the same permissions like data directory
If you did not save mysql database (mysql directory in your old server's data dir, then you can try to:
create database with the same name as database you want to recover.
Then you can create each table (it would be good to use the same structure - you'd have bigger chance of recovery).
then stop mysql server and delete files from database directory and overwrite them with files from old server
start mysql and repair each table.
I wound up giving up. I think the answer is that, with my particular version of MySQL, this doesn't work. Hopefully things have improved since then.