mysqldump nicht identisch?

knebb
Posts: 92
Joined: 2006-05-30 11:16
Location: M-V

mysqldump nicht identisch?

Post by knebb »

Hi,

habe hier ein merkwuerdiges Problem.

Zwei unabhaengige MySQL Server unter CentOS 5. Gleiche Versionen, nur eine 32bit, die andere 64bit.
Habe ein Skript erstellt, dass mir die Datenbanken mittels mysqldump sichern soll:

Code: Select all

#!/bin/bash
cd /var/lib/mysql
mysqldump -v --opt --master-data --lock-all-tables --triggers --routines --flush-logs --delete-master-logs  -u root -ppqwssword  --all-databases > mysql.dump

Das Skript ist auf beiden Maschinen.
Auf Server 1 sichert er brav, auf dem anderen garnicht.... 8O
So sieht die Ausgabe der beiden Skripte aus (wegen -v):

Code: Select all

[root@mysqla ~]# /root/backup_mysql.sh
-- Connecting to localhost...
-- Disconnecting from localhost...

Und so auf dem anderen:

Code: Select all

[root@mysqlb ~]# /root/backup_mysql.sh
-- Connecting to localhost...
-- Retrieving table structure for table akt...
-- Sending SELECT query...
-- Retrieving rows...
[...]
-- Retrieving table structure for table k_w_watchlist...
-- Sending SELECT query...
-- Retrieving rows...
-- Disconnecting from localhost...


Schaue ich in das mysql.dump rein, sehe ich bei dem einen auch die "CREATE DATABASE" Eintraege. Und beim anderen nicht.

Jetzt wollte ich mal die Berechtigungen ueberpruefen mittels mysql. Hier der Output, wo es NICHT funktioniert:

Code: Select all

[root@mysqla ~]# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 931281
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql
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> select * from user where user.User = "root";
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| Host         | User | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| localhost    | root | abcdefghijkmlnr5 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                |          |            |             |              |             0 |           0 |               0 |                    0 |
| nnn.doma.in  | root | abcdefghijkmlnr5 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                |          |            |             |              |             0 |           0 |               0 |                    0 |
| %.doma.in    | root | abcdefghijkmlnr5 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                |          |            |             |              |             0 |           0 |               0 |                    0 |
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
3 rows in set (0.00 sec)


Und hier, wo es klappt:

Code: Select all

[root@mysqlb ~]# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3421195
Server version: 5.0.77-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
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> select * from user where user.User = "root";
+---------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
| Host          | User | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections |
+---------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
| localhost     | root | abcdefghijkmlnr5 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                |          |            |             |              |             0 |           0 |               0 |
| b.doma.in     | root | abcdefghijkmlnr5 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                |          |            |             |              |             0 |           0 |               0 |
+---------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
2 rows in set (0.00 sec)


Was mir auffaellt ist der Unterschied der Ausgabe der beiden Queries- das erste hat mehr Berechtigungen. Konkret Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv dazu. DAZU- auf der Kiste, auf der es NICHT klappt... :-o :-o :-o

Warum? Gleiche Distri, gleiche Versionen, nur 32bit vs. 64bit. :-? :-o :(

Jemand eine Idee?
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Server version: 5.0.77 Source distribution

und

Server version: 5.0.77-log Source distribution

ist theoretisch berachtet schon eine andere Version.
Was ist denn in der my.cnf zu finden? speziell in der Sektion [mysqldump]

Wird mysqldump denn genau mit den gleichen Paramatern aufgerufen?

Generell würde ich zur Sicherung andere Methoden als einen dump anwenden z.B. LVM Snapshot.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

knebb
Posts: 92
Joined: 2006-05-30 11:16
Location: M-V

Re: mysqldump nicht identisch?

Post by knebb »

ddm3ve wrote:Server version: 5.0.77 Source distribution

und

Server version: 5.0.77-log Source distribution

ist theoretisch berachtet schon eine andere Version.


Was da auch immer der Unterschied sein mag- rpm gibt gleiche Versionen aus. Ob die bei CentOS/ RedHat eine Unterscheidung machen? Komisch, ja.

Code: Select all

[root@mysqla ~]# rpm -qa |grep mysql-server
mysql-server-5.0.77-4.el5_6.6
und

Code: Select all

[root@mysqlb ~]# rpm -qa |grep mysql-server
mysql-server-5.0.77-4.el5_6.6


Und hier die my.cnf, ich kann keinen entscheidenden Unterschied feststellen:

Code: Select all

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
server-id=10
report-host=xxx-intern.dama.in
table_cache = 168
#
# * Query Cache Configuration
#
query_cache_type          = 1
query_cache_size          = 48M
query_cache_limit         = 48M
max_connect_errors        = 10
log_warnings              = 2
long_query_time           = 2
thread_cache_size         = 4
relay-log               = /var/run/mysqld/mysqld-relay-bin.000001
relay-log-index         = /var/run/mysqld/mysqld-relay-bin.index

[mysql.server]
user=mysql
basedir=/var/lib
collation_server=utf8_bin
character_set_server=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Sowie

Code: Select all

[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
bind-address = 127.0.0.1

#Following entries for MASTER DB
log-bin
server-id=1

table_cache = 168
#
# * Query Cache Configuration
#
query_cache_type          = 1
query_cache_size          = 48M
query_cache_limit         = 48M
max_connect_errors        = 10
log_warnings              = 2
long_query_time           = 2
thread_cache_size         = 4

# Charset for server
collation_server=utf8_bin
character_set_server=utf8


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
bind-address = 127.0.0.1


Wird mysqldump denn genau mit den gleichen Paramatern aufgerufen?

Ja, siehe Skript exakt der gleiche Aufruf.

Generell würde ich zur Sicherung andere Methoden als einen dump anwenden z.B. LVM Snapshot.
Noe, LVM will ich da nicht drauf haben. Wie willst Du denn damit auch die Konsistenz sicherstellen? Aber brauchen wir nicht diskutieren. IMHO sollte mysqldump wunderbar funktionieren- was es aber leider nicht tut :evil:
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Also Konsistenz:

Lock setzen, Snapshot erstellen, Loc aufheben,
Dauert ca. 1-3 Sekunden.
danach hast Du tatsächlich einen Konsistenten stand bei sehr geringer Sperre.

Zum dump, dann bleibt Dir offensichtlich nichts anderes übrig, als alle notwendigen Parameter u.a. für die creates zu setzen.

Eventuell findet sich im home dir des jeweiligen Benutzers, welcher den Dump erstellt, eine .my.cnf welches mysqldump Optionen enthält.
Ansonsten ist ggf. tatsächlich damit zu rechnen, dass die default optionen sich bei den eingesetzten Versionen unterscheiden.
Da hilft halt nur das konsequente Setzen der Parameter
Last edited by ddm3ve on 2012-01-24 12:28, edited 1 time in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Paar Links zum Thema LVM / Backup Mysql:

http://mysqldump.azundris.com/archives/ ... f-LVM.html

Allgemein ist dieser artikel nicht ohne Grund Sticky:
viewtopic.php?f=103&t=39167

Und diese Kapitel: 7 ist eigentlich zielführend für das thema Backup und Restore.
viewtopic.php?f=103&t=39167#p302387
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

knebb
Posts: 92
Joined: 2006-05-30 11:16
Location: M-V

Re: mysqldump nicht identisch?

Post by knebb »

ddm3ve wrote:Paar Links zum Thema LVM / Backup Mysql:

http://mysqldump.azundris.com/archives/ ... f-LVM.html

Wie gesagt, LVM faellt aus verschiedenen Gruenden aus. Setze es gerne bei anderen Gelegenheiten ein, aber nicht dafuer.
Und diese Kapitel: 7 ist eigentlich zielführend für das thema Backup und Restore.
viewtopic.php?f=103&t=39167#p302387

Jau. Und genau da habe ich meine Parameter fuer mysqldump auch abgeglichen- bei einer gehts, bei der anderen nicht.

Was ist denn der Unterschied zwischen der "-log" und der ohne? Ist evtl. ein anderes binary? Oder ausschliesslich waehrend der Uebersetzung festgelegt?
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Das weiss ich nicht, wo der Unterschied ist.
Centos ist nun nicht die distribution, mit der ich mich auseinander setze.

Esist durchaus möglich, dass die 32 und die 64 Bit Variante aus anderen Händen stammt und damit verbunden ggf. die Default Optionen ab weichen.

Daher der Hinweis, alle Optionen, auch die, die man per feaut haben wollte, setzen.
Unterscheidet sich das immer noch, kann man getrost von einem bug aus gehen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11519
Joined: 2003-02-27 01:00
Location: Hamburg

Re: mysqldump nicht identisch?

Post by Joe User »

Zunächst erstmal die Rechte des Users auf den gleichen Level bringen und danach die Optionen für mysqldump genauestens prüfen.
Die Unterschiede zwischen den beiden Serverversionen finden sich im jeweiligen Spec-File und letztendlich im Sourcecode.

Was nebenbei bemerkt zu beachten ist, dass MySSQL 5.0 nicht mehr supportet wird.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Top

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: mysqldump nicht identisch?

Post by daemotron »

Joe User wrote:Was nebenbei bemerkt zu beachten ist, dass MySSQL 5.0 nicht mehr supportet wird.

Von MySQL selbst nicht, aber da CentOS quellengleich mit RHEL ist, gibt's den Support dafür von Red Hat (wobei man sich natürlich fragen darf, wie lange man mit Backports hantieren möchte).
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Joe User wrote:Zunächst erstmal die Rechte des Users auf den gleichen Level bringen und danach die Optionen für mysqldump genauestens prüfen.



Grundsätzlich richtig, jedoch hatte der User schon mal eine Anfrage zum Thema:
Replikation zwischen mysql 64 bit und mysql 32 Bit.

Sollte es sich um dieses System/ Konstellation handeln, dann sollte man eigentlich erwarten, dass die Benutzerberechtigungen identisch sind.
Sind Sie aber nicht, wie man erkennen kann. Was aber nicht die unterschiedlichen dumps erklärtn inwelchem die create Statements fehlen.


Vergleicht man die Spalten aus mysql.user der jeweiligen Datenbank.

select * from user where user.User = "root";


Dann bestehen hier ganz klar Unterschiede, die ich erstmal nicht auf eine -log oder ohne -log sondern einem minor Versionsunterschied oder einem verkorkstem Restore zurück führen würde.
Erst seit Version 5.0 benötigt man übrigens die Rechte:

Create_routine_priv | Alter_routine_priv | Create_user_priv

Davor gab es noch keine Stored Procedures.
Da scheint mir also im Zweifel bei einem Upgrade oder Restore von einer vorhergehenden Version etwas schief gelaufen zu sein.


Ich würde mit einem explain table mal die Struktur der Systemtabellen genau vergleichen wollen.
Last edited by ddm3ve on 2012-01-25 14:20, edited 1 time in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

knebb
Posts: 92
Joined: 2006-05-30 11:16
Location: M-V

Re: mysqldump nicht identisch?

Post by knebb »

ddm3ve wrote:...hatte der User schon mal eine Anfrage zum Thema:
Replikation zwischen mysql 64 bit und mysql 32 Bit.

Sollte es sich um dieses System/ Konstellation handeln, dann sollte man eigentlich erwarten, dass die Benutzerberechtigungen identisch sind.

Hehehe- jau, hast recht :D
Die Replikation war mal eingerichtet, lief aber nicht wirklich stabil (vmtl. wegen Dial-In via VPN), so dass sie nicht mehr aktiv ist.

Vergleicht man die Spalten aus mysql.user der jeweiligen Datenbank.

select * from user where user.User = "root";


Dann bestehen hier ganz klar Unterschiede, die ich erstmal nicht auf eine -log oder ohne -log sondern einem minor Versionsunterschied oder einem verkorkstem Restore zurück führen würde.

Minor Versionsunterschied bei gleicher Distri, nur 64/32? KAnn ich kaum glauben. Eher restore. Ich kann nicht ausschliessen, dass eine (oder sogar beide) schonmal via restore gefahren wurden. Laesst sich aber nicht mehr nachvollziehen.
Erst seit Version 5.0 benötigt man übrigens die Rechte:

Create_routine_priv | Alter_routine_priv | Create_user_priv

Davor gab es noch keine Stored Procedures.

Das erklaert mir aber immer noch nicht, warum der mysqldump auf der Kiste, die diese Privs ja hat, nicht funktioniert. Umgekehrt wuerde ich da ja sofort zustimmen.
Aber vielleicht sollten wir uns mal nur darauf konzentrieren, WARUM das mysqldump auf der einen nicht funktioniert, obwohl es lt. Parametern ja einwandfrei sollte!

Da scheint mir also im Zweifel bei einem Upgrade oder Restore von einer vorhergehenden Version etwas schief gelaufen zu sein.

Das kann ja dann aber doch eigentlich nur bei Restore/Upgrade der mysql Datenbank selber sein? Wenn ich eine "Benutzerdatenbank" restore, duerfte das doch kein Thema sein, oder?

Ausgabe von explain user:

Code: Select all

mysql> explain user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | char(60)                          | NO   | PRI |         |       |
| User                  | char(16)                          | NO   | PRI |         |       |
| Password              | char(41)                          | NO   |     |         |       |
| Select_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv          | enum('N','Y')                     | NO   |     | N       |       |
| File_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv            | enum('N','Y')                     | NO   |     | N       |       |
| References_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv   | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv      | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type              | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher            | blob                              | NO   |     | NULL    |       |
| x509_issuer           | blob                              | NO   |     | NULL    |       |
| x509_subject          | blob                              | NO   |     | NULL    |       |
| max_questions         | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates           | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections       | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       |
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.00 sec)


Der Benutzer "root" hat also ALLE Berechtigungen, die via EXPLAIN angezeigt werden:

Code: Select all

mysql> select * from user where user.User = "root";
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| Host         | User | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| localhost    | root | aaaa6d1047be6a89 | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                |          |            |             |              |             0 |           0 |               0 |                    0 |
+--------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
1 rows in set (0.00 sec)


Danke fuer den Tip mit EXPLAIN, es zeigt Unterschiede auf, erklaert aber halt nicht, warum es auf der einen Kiste (mit erweiterten Privilegien) nicht geht. Wie gesagt: auf der anderen wuerde ich das einsehen, weil die DB dort von 4.0 migriert wurde (und damit wohl die neuen Privs bei 5.0 eben nicht in der mysql DB enthalten sind).
Last edited by knebb on 2012-01-25 14:54, edited 1 time in total.
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

Bei einem richtigen Upgrade, werden auch die Systemtabellen erweitert / angepasst.
Hast Du lediglich den dump eingespielt ggf. sogar mit einem

drop if exists, dann erklärt das schon, was hier schief gegangen ist.

Sich auf Dein "dump" Problem zu konzentrieren klappt erst, wenn alle anderen Rahmenbedingungen "identisch" bzw. korrigiert sind.

Erst dann kann man erneut prüfen, ob und welcher Unterscheide es ggf. noch in Deiner Installation gibt.

Jeder Fehler, und die falsche Spaltenanzahl in der mysql.user ist ein Fehler,
kann zu unerwünschten Nebeneffekten führen.
Wenn nun ein solcher Fehler entdeckt wird, besteht auch eine hohe Wahrscheinlichkeit, dass nicht nur mysql.user sondern bedeutend weitere Tabellen u.a. ggf. das information_schema betroffen sind, weshalöb mysqldump hier keinen sauberen export fahren kann.

D.H. die Datenbasis muss in einem zu den Binares passenden Format vorliegen.
Sonst kann da alles mögliche schief gehen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

knebb
Posts: 92
Joined: 2006-05-30 11:16
Location: M-V

Re: mysqldump nicht identisch?

Post by knebb »

ddm3ve wrote:Bei einem richtigen Upgrade, werden auch die Systemtabellen erweitert / angepasst.
Hast Du lediglich den dump eingespielt ggf. sogar mit einem
drop if exists, dann erklärt das schon, was hier schief gegangen ist.

Erklaert, warum auf der einen Kiste die Privilegien fehlen, ja. Werde ich die naechsten Tage korrigieren.

Jeder Fehler, und die falsche Spaltenanzahl in der mysql.user ist ein Fehler, kann zu unerwünschten Nebeneffekten führen.

Ist auch klar, aber bitte beachte, dass das mysqldump dort nicht funktioniert, wo die neuen Priv korrekt vorhanden sind!
Der Fehler mit den Spalten tritt auf der unabhaengigen, anderen auf, wo das mysqldump einwandfrei funktioniert!

Habe also zwei Fehler hier:
Falsche Spalten bei DB A [wird die Tage korrigiert]
mysqldump geht nicht bei DB B [immer noch unklar, warum]


Habe gerade festgestellt, dass in der bei der es nicht funktioniert auch die InnoDB Engine bei einer Datenbank verwendet wird. Gehe ich recht in der Annahme, dass das evtl. des Raetsels Loesung sein koennte, da mysqldump ja "nur" auf die MyISAM Engine abziehlt?

Die InnoDB Engine hat mir gerade MediaWiki eingerichtet, das war ich nicht selbst! :lol:

Aber auch, wenn ich nur einzelne Datenbanken sichere, klappt das nicht:

Code: Select all

[root@mysqlb mysql]# mysqldump -v --opt --master-data --lock-all-tables --triggers --routines --flush-logs --delete-master-logs  -u root -pxxxxx  mysql
-- Connecting to localhost...
-- MySQL dump 10.11
--
-- Host: localhost    Database: mysql
-- ------------------------------------------------------
-- Server version       5.0.77

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- Disconnecting from localhost...
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2012-01-25 13:53:58


Ich blicke es nicht wirklich, sorry. 8O
Top

ddm3ve
Moderator
Moderator
Posts: 1115
Joined: 2011-07-04 10:56

Re: mysqldump nicht identisch?

Post by ddm3ve »

[code][/code]mysqldump zieht auf alle Engines ab.
Da sollte es keinen Unterschied geben.

Kann es ggf. sein, dass einzelne Tabellen Probleme haben und repariert werden müssten?
Das ist teilweise auch ein Grund warum ein dump in die Binsen geht.

Ich würde an der Stelle eine Analyse über alle Tabellen durch führen und prüfen welche der Tabellen ggf. repariert und / oder optimiert werden sollte.

Dennoch würde ich ebenfalls mysqldump mit allen Parametern setzen.

Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
all TRUE
all-databases FALSE
all-tablespaces FALSE
no-tablespaces FALSE
add-drop-database FALSE
add-drop-table TRUE
add-locks TRUE
allow-keywords FALSE
character-sets-dir (No default value)
comments TRUE
compatible (No default value)
compact FALSE
complete-insert FALSE
compress FALSE
create-options TRUE
databases FALSE
debug-check FALSE
debug-info FALSE
default-character-set utf8
delayed-insert FALSE
delete-master-logs FALSE
disable-keys TRUE
events FALSE
extended-insert TRUE
fields-terminated-by (No default value)
fields-enclosed-by (No default value)
fields-optionally-enclosed-by (No default value)
fields-escaped-by (No default value)
first-slave FALSE
flush-logs FALSE
flush-privileges FALSE
force FALSE
hex-blob FALSE
host (No default value)
insert-ignore FALSE
lines-terminated-by (No default value)
lock-all-tables FALSE
lock-tables TRUE
log-error (No default value)
master-data 0
max_allowed_packet 16777216
net_buffer_length 1046528
no-autocommit FALSE
no-create-db FALSE
no-create-info FALSE
no-data FALSE
order-by-primary FALSE
port 3306
quick TRUE
quote-names TRUE
replace FALSE
routines FALSE
set-charset TRUE
single-transaction FALSE
dump-date TRUE
socket /var/run/mysql/mysql.sock
ssl FALSE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
tab (No default value)
triggers TRUE
tz-utc TRUE
user root
verbose FALSE
where (No default value)


Alles, was hier true ist und Du als true erwartest würde ich explizit mal setzen.
Siehe dazu auch

man mysqldump

Die Defaults können sich u.U. zu Deinem system unterscheiden.
Last edited by ddm3ve on 2012-01-25 15:47, edited 1 time in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11519
Joined: 2003-02-27 01:00
Location: Hamburg

Re: mysqldump nicht identisch?

Post by Joe User »

Auf beiden Systemen vorsichtshalber mal folgende Scripts als root ausführen:

Code: Select all

mysql_upgrade
mysql_fix_privilege_tables

Und dann ein einfaches mysqldump vergleichen:

Code: Select all

mysqlcheck --optimize --all-databases -uroot
mysqldump --flush-logs --master-data --lock-all-tables --delete-master-logs --all-databases -uroot > mysqldump.sql
mysqlcheck --analyze --all-databases -uroot
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Top